Access violation at adress. bla bla.
Hej..Er ved at lave et program, som modtager noget data fra com porten.
Den modtager dataen som den skal, og alt virker som om det fungere..
Men... Når programmet når til den sidste '}' i min kode til timeren, så får jeg en access violation. "Access violation at address 008F6F1D. Write of address FFFFFF65"..
Min kode:
void __fastcall TfrmMain::tmrDoLogTimer(TObject *Sender)
{
// Vejret vejr; //Opretter et nyt objekt af classen Vejret
//Henter aktuel tid
time_t tmtTime;
struct tm *ts;
tmtTime = time(NULL);
ts = localtime(&tmtTime);
sprintf(vejr.Dato, "%u-%u-%u", ts->tm_mday, ts->tm_mon + 1, ts->tm_year + 1900);
sprintf(vejr.Tid, "%u:%u:%u", ts->tm_hour, ts->tm_min, ts->tm_sec);
InitModtag();
vejr.SetLabels();
vejr.Tick();
if(vejr.IsLoggin == TRUE)
{
if(vejr.Ticks == (atoi(vejr.LogInterval) * 100))
{
vejr.DoLog();
vejr.SaveLog();
vejr.Ticks = 0;
}
}
} //Efter denne linje får jeg fejl.
Hvis jeg udkommentere InitModtag(); så virker den fint.
Min InitModtag():
void InitModtag()
{
char chrChar;
char chrString[30] = "";
char chrLog[3] = "";
int i = 0, x = 0, y = 0;;
unsigned long int ByteTransferred;
do
{
do
{
ReadFile(CommPortHandle,&chrChar,1,&ByteTransferred,NULL);
}while(!ByteTransferred);
}while(chrChar!='{');
do{
do{
ReadFile(CommPortHandle,&chrChar,1,&ByteTransferred,NULL);
}while(!ByteTransferred);
chrString[i] = chrChar;
i++;
}while(chrChar!='}');
for(i = 0;i < strlen(chrString);i++)
{
if(chrString[i] != ',' && chrString[i] != '}')
{
chrLog[x] = chrString[i];
x++;
}
else
{
if(y == 0)
{
vejr.Grader = atoi(chrLog);
}
else if(y == 1)
{
vejr.Luft = atoi(chrLog);
}
else if(y == 2)
{
vejr.Vind = atoi(chrLog);
}
strcpy(chrLog, " ");
y++;
x = 0;
}
}
}
Den skriver værdien korrekt, og jeg ved at de også bliver skrevet til mine Label felter...