Avatar billede mieritz Nybegynder
01. oktober 2003 - 15:33 Der er 11 kommentarer og
1 løsning

Hvordan får jeg far i værdien

void __fastcall TGetBillForm::LogListDrawItem(TWinControl *Control,
      int Index, TRect &Rect, TOwnerDrawState State)
{
  LogList->Canvas->FillRect(Rect);
  Log* pr=(*log)[Index];
  drawItem(LogList,LogHeader,Rect,0,pr->time.to_str().c_str());
  drawItem(LogList,LogHeader,Rect,1,pr->foliono.foliono);
  drawItem(LogList,LogHeader,Rect,2,pr->roomno.roomno);
  drawItem(LogList,LogHeader,Rect,3,pr->text);
 
  switch(lt) {
 
    case Protocol::logMinibar:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      a = a + x;
      break;
    }
    case Protocol::logSonyGames:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      b = b + x;
      break;
    }
    case Protocol::log2MGames:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      c = c + x;
      break;     
  }
    case Protocol::logInternet:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      d = d + x;
      break;
    }
    case Protocol::logLaptop:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      e = e + x;
      break;
    }
    case Protocol::logEmail:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      f = f + x;
      break;
    }
    case Protocol::logChat:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      g = g + x;
      break;
    }
    case Protocol::logVideo:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      h = h + x;
      break;
    }
    case Protocol::logPayTv:{
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      i = i  + x;
      break;
    }
   
 
    case Protocol::logBill: {
      char buf[50];
      LogBill* p=(LogBill*)pr;
      drawItem(LogList,LogHeader,Rect,4,pay_rec::price_tostr(p->price).c_str());
      x = p->price;
      j = j + x;
      break;
    }
   
  }
}

Mit problem er atjeg skal bruge værdierne a,b,c,d,e,f,g,h,i,j i en anden fil, men hvad skal jeg skrive i denne fil for at få dat i disse værdier?
Mit andet spørgsmål er at når jeg har fået fat i dem så skal de nulstilles efter de er blevet brugt og det skal denne fil registrere hvordan gør jeg det?
Avatar billede arne_v Ekspert
01. oktober 2003 - 15:47 #1
En (primitiv) måde var at gøre dem til globale variable.
Avatar billede mieritz Nybegynder
01. oktober 2003 - 15:54 #2
det har jeg prøvet så kan den ikke få fat i p->price det er derfor at jeg har sat dem ind der hvor de er nu
Avatar billede arne_v Ekspert
01. oktober 2003 - 15:59 #3
Hvor du er erklæret henne påvirke rvel ikke den kode du har postet ?
Avatar billede mieritz Nybegynder
01. oktober 2003 - 16:02 #4
jeg vil gerne have det stående som det står nu hvad kan jeg gøre for at hente de værdier
Avatar billede arne_v Ekspert
01. oktober 2003 - 16:04 #5
Hvordan står de nu ?

Du har kun postet koden der assigner til dem - ikke koden der erklærer dem.
Avatar billede bertelbrander Novice
01. oktober 2003 - 19:50 #6
Hvis du har en variabel:
int x;
i en cpp fil skal du lave en
extern int x;
i en headerfil der inkluderes af den anden cpp-fil.

Hvis variablen x kun skal bruges inden for klassen TGetBillForm bør den erklæres i class'en i dennes header-fil (og så behøver du ingen extern).
Avatar billede mieritz Nybegynder
08. oktober 2003 - 10:19 #7
Jeg forstår ikke hvad i mener. Jeg har prøvet at erklære dem i BillLog.h hvor jeg skrev extern float a; osv. men det ville den ikke godtage. Hvor skal det stå henne i BilLog.cpp eller BillLog.h. Og hvordan får jeg så fat i dem i min Graphicview.cpp(her skal jeg bruge værdien fra BillLog) havd skal jeg skrive der for at hente værdierne.
Avatar billede arne_v Ekspert
08. oktober 2003 - 10:39 #8
float a;

i toppen af BillLog.cpp og:

extern float a;

i toppen af Graphicsview.cpp (selvfølgelig burde der bruges en
.h fil, men prøv og det her til at virke først).
Avatar billede mieritz Nybegynder
08. oktober 2003 - 10:44 #9
det virkede du kan lige smide et svar så får du point
Avatar billede mieritz Nybegynder
08. oktober 2003 - 10:45 #10
hvis jeg vil gøre det i en .h fil hvordan vil det så se ud
Avatar billede arne_v Ekspert
08. oktober 2003 - 10:50 #11
svar
Avatar billede arne_v Ekspert
08. oktober 2003 - 10:53 #12
Det kan laves på flere måder med .h fil.

En måder er at putte følgende i en data.h fil:

#ifdef DATA_DEFINE
float a;
float b;
float c;
#else
extern float a;
extern float b;
extern float c;
#endif

og så have en og kun en .cpp fil med:

#define DATA_DEFINE
#include "data.h"

og 0-mange .cpp filer med:

#include "data.h"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester