28. september 2005 - 08:21Der er
7 kommentarer og 1 løsning
Overførsel af variabel i for løkke
Hej,
I ensemplet herunder kan kodne godt kompileres uden fejl, men når dne afvikles lukkes vinduet blot med det samme.
for YAxis := 0 to 6 do begin if YAxis = 0 then YScan := 0 else YScan := YScan + 1;
for XScan := 0 to 19 do begin X := YScan * 2; end; end;
Hvis jeg erstatter X := YScan * 2; med X := XScan * 2; virker koden som den skal.... hvorfor nu det... kan jeg ikke anvende YScan variablen når jeg går ind i en ny for løkke?!
for XScan := 0 to 19 do begin X := YScan * 2; end; end;
hvorfor ikke bare X := YScan * 2; hvorfor skal X sættes 20 gange?
Synes godt om
Slettet bruger
29. september 2005 - 08:18#2
Det var bare et eksempel... koden var skrællet for alt da den gik ned hele tiden... men umiddelbart ser det ud som om at der er problemer med den enhedn koden kommunikere med... men fejlen er dog endnu ikke fundet..... den går ned i samme sekund jeg laver en for-løkke i en for-løkke
Koden virker fint her uanset hvad der står i 2. lykke, code optimization fjerner dog 2. lykke hvis ikke X benyttes senere i koden men benyttes X så er der ingen problemer.
hmm, hvis vi skal finde fejlen i din kode er du nok nødt til at vise os den ;)
den kode du har vist os virker fint (uden at give meninng, men den virker *g*)
enten er du nødt til at poste hele koden her, eller du kan prøve selv at finde fejlen ved at pille sektioner af kode ud af dine løkker indtil det virker. Den seidste sektion du pillede ud før det virker må indeholde fejlen.
ha' det godt hatecaps
Synes godt om
Slettet bruger
29. september 2005 - 13:16#5
begin
CardInfo := @myCInfo; //CardInfo gives the adr where myCInfo //is.
// scan through all device numbers from 0 to 255 for cardNumber := 0 to 255 do
begin result := SeaIo_OpenDevice(CardNumber,hDevice); if (result = 4) then //4 - invalid name showmessage(inttostr(result));
if (result = 0) then //0 - No errors
begin SeaIo_GetAdapterInfo(hDevice^, CardInfo); //hDevice^ - Gives the adr where hDevice is, //the value has been placed there as a //return from OpdenDevice. Returns with the //CardInfo (tagADAPTER_INFO) showmessage('Returns: ' + inttostr(result) + #13#10 + 'CardNumber: ' + IntTOStr(CardNumber) + #13#10 + 'Handler adresse: ' + inttostr(hDevice^) + #13#10 + 'Model number: ' + IntToStr(CardInfo^.wCardNumber)); break; end; end;
// for loop := 0 to 6 do //Scan Y axis in display for XScan := 0 to 19 do //Scan X axis in display begin case XScan of //Letter number in progress 0..4: begin LetterCount := 0; TmpLetter[YScan, XScan] := A[YScan, XScan]; end; 5..9: begin LetterCount := 1; XScanTmp := XScan - (LetterCount * 5); TmpLetter[YScan, XScanTmp]:= B[YScan, XScanTmp]; end; 10..14: begin LetterCount := 2; XScanTmp := XScan - (LetterCount * 5); TmpLetter[YScan, XScanTmp]:= C[YScan, XScanTmp]; end; 15..19: begin LetterCount := 3; XScanTmp := XScan - (LetterCount * 5); TmpLetter[YScan, XScanTmp]:= D[YScan, XScanTmp]; end; end;
ok, vi mangler stadig nogle definitioner på dine variabler. Alt efter hvordan compiler direktiver o.l. er sat, kan fejlen skyldes at du f.eks. har defineret B til at være array[1..7][1..20] of.... så programmet vil prøve at læse/skrive en værdi fra/til B[0,0] !!
Hvis dette ikke er tilfævldet ville jeg prøve at starte med følgende kode:
for YScan := 0 to 6 do begin for XScan := 0 to 19 do begin showmessage('YScan: '+inttostr(YScan)+' XScan: '+inttostr(XScan)); end; end;
vare for at se at løkkerne kører som de skal. Når det er i orden, prøv så at tilføje mere og mere af koden, og se hvornår fejlen opstår.
Uden al den anden kode (definitioner, units o.s.v) så vi selv kan kører koden, er der svært at sige mere.
Synes godt om
Slettet bruger
04. oktober 2005 - 08:45#7
Lukker spm.
Har ikke løst spørgsmålet.. begyndte forfra og opdelte meget mere i funktioner og fik det derigennem til at kører.
Hvis hatecaps og kroning laver et svar inden fredag så får i points.
Synes godt om
Slettet bruger
07. oktober 2005 - 11:11#8
Lukker spm
Synes godt om
Ny brugerNybegynder
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.