Hallå igen, jag skrev i förra inlägget att jag hade problem med globala procedurer och funktioner, detta problem har jag löst nu men nu fungerar inte min globala variabel. Har du skapat en instans av TModule, innan du anropar CheckState? >Du skall inte ha end före Else. Ialla fall verkar det vara så som Q säger, han har inte skapat en instans av Tmodule. Tyvärr hade jag redan skapat en instans, i modulen iaf ska man skapa en i formen där man ska använda variabeln också? Jag testade det men jag fick det inte att fungera... Tack för att ni försökte hjälpa mig, men nu har jag löst det iaf. >Felet var att modulen inte hade blivit startad(eller inte ligger först i listan)Globala variablar?
Jag har dimensionerat variabeln State(Boolean) i public-delen i en datamodul, precis före proceduren ChackState som fungerar som den ska. Men när jag anropar CheckState från en form så ska den kolla om State är true, om jag försöker använda den i en if-sats i en form eller försöker ändra på den någonstans så blir det fel. Felet kommmer upp i en msgbox och inte i debugfönstret som vanligt.
Project MyProject.exe rased exception class EAccessViolation with message 'Access Vialation at address 0044AF46 in module 'MyProject.exe'. Read of address 000002EC'. Progress stopped. Use Step or Run to continue.
Det går att klicka på run igen så kör den programmet men varje gång den försöker ändra eller läsa State så hoppar den över resten av proceduren.
Koden för proceduren CheckState:
<code>
procedure TModul.CheckState;
begin
if State = True then //Här fastnar den
begin
//skriver ut värden, on State=true
end
else
begin
//skriver ut värden, on State=false
end
end;
</code>
Vad är felet? Tacksam för svar!
///ZorekSv: Globala variablar?
Tror inte felet ligger i koden du visar här.Sv: Globala variablar?
Klart han ska ha end före Else om han har begin?
men man kan inte ha
<code>
if blabla = bla then
begin
//do something
end;
else
begin
//do something else
end;
</code>
alltså inget ; före ElseSv: Globala variablar?
du kan tex göra det så här:
<code>
module1:Tmodule;
module1 := Tmodule.create;
</code>
sen kan han nog anropa sina functioner...Sv: Globala variablar?
Men det konstiga är ju att procedurer och funktioner fungerar som dom ska...Sv: Globala variablar?
Felet var att modulen inte hade blivit startad(eller inte ligger först i listan) på menyn där man väljer vilka klasser som ska skapas när man startar programmet. Jag tror att man ska välja Project, Options och klicka på en av flikarna där.Sv: Globala variablar?
Med andra ord så fanns ingen instans av TModule när du försökte anropa checkstate.