Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge
Verwijderd
Wat dacht je van debug lines toe te voegen?
Denk dat je eerst maar moeten leren je eigen code te debuggen voordat je hier komt.
Denk dat je eerst maar moeten leren je eigen code te debuggen voordat je hier komt.
wat dacht je ervan om een code-tag te gebruiken?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| procedure TForm1.FormCreate(Sender: TObject);
type
FirstLine = record
LastLineRec: integer;
NumSys: integer;
end;
var
F: file;
Buf: FirstLine;
begin
if OpenDialog1.Execute then
AssignFile(F, OpenDialog1.FileName);
Reset(F, 84);
BlockRead(F, Buf, 1);
Canvas.TextOut(5,10,'Sys: ' + IntToStr(Buf.LastLineRec)
+ ' LastLine: ' + IntToStr(Buf.NumSys));
CloseFile(F);
end; |
Ja, sorry ik wist niet precies hoe de code werkt, maar dus zo. Maar heeft iemand een idee? Het loopt vast zodra er uit de functie is gekomen.
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge
oftewel: breakpoints toevoegen, en debuggen maarOp zondag 07 oktober 2001 11:51 schreef Angel het volgende:
Wat dacht je van debug lines toe te voegen?
Denk dat je eerst maar moeten leren je eigen code te debuggen voordat je hier komt.
Verwijderd
Je wilt 84*1 = 84 bytes inlezen, terwijl je plaats hebt voor 8 bytes, da ga nie goet
Oplossing: Lees 8 bytes in
vb
of
of
of
Oplossing: Lees 8 bytes in
vb
code:
1
2
| Reset(F, 8); BlockRead(F, Buf, 1); |
of
code:
1
2
| Reset(F, 1); BlockRead(F, Buf, 8); |
of
code:
1
2
| Reset(F, 2); BlockRead(F, Buf, 4); |
of
code:
1
2
| Reset(F, 4); BlockRead(F, Buf, 2); |
Verrek, daar heb ik niet aan gedacht om het zo te doen!! Maar ik moet zowiezo 84 inlezen want mijn andere records zijn zo groot (het hele programma is eigenlijk een rewrite van FortranOp zondag 07 oktober 2001 14:38 schreef DiFool het volgende:
Je wilt 84*1 = 84 bytes inlezen, terwijl je plaats hebt voor 8 bytes, da ga nie goet
Oplossing: Lees 8 bytes in
of... of... of...
Voor de mensen boven jou: denk je dat ik niet heb gedebugged? Ik ben 3 dagen al bezig met dit stomme ding. Maar dank je DiFool, ik zal het proberen!!
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge
Verwijderd
eh misschien
Allebei precies 84 bytes
code:
1
2
3
| var Buffer1: array[0..83] of Char; Buffer2: array[0..20] of Integer; |
Allebei precies 84 bytes
Jah, bedankt DiFool!! (al bij je vorige met 8 bytes). Ik heb gewoon aan de FirstLine een character type toegevoegd van 76 bytes
Nu doet ie het perfect!! Het echte probleem was dat de eerste record er zo uitziet (en dus maar 8 bytes gebruikt), terwijl alle volgende records de volledige 84 bytes gebruiken. Kennelijk vond Delphi het niet zo goed dat bij de eerste inlezing met de resterende 76 bytes niks werd gedaan en liep aan het einde vast. Dank U zeer
code:
1
2
3
4
5
| Firstline = record LastLineRec: integer; NumSys: integer; NOthing: array[1..76] of char; end; |
Nu doet ie het perfect!! Het echte probleem was dat de eerste record er zo uitziet (en dus maar 8 bytes gebruikt), terwijl alle volgende records de volledige 84 bytes gebruiken. Kennelijk vond Delphi het niet zo goed dat bij de eerste inlezing met de resterende 76 bytes niks werd gedaan en liep aan het einde vast. Dank U zeer
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge
Verwijderd
Probleem is dat je 8 bytes geheugen gealloceerd had [record met 2 integers], je geeft het adres van die allocatie door [dmv var Buffer] en zegt dat hij vanaf daar 84 bytes mag vullen, wat Delphi dan ook vrolijk doet; dan gaat Windows bij byte 9 huilen dat je op een geheugenlokatie zit te schrijven waar je geen toegang tot hebt [aka Access violation].
Het rare vind ik wel dat de melding pas na de CloseFile komt, maar dat is volgens mij compiler magic van Delphi, met als doel dat het bestand altijd gesloten wordt.
Het rare vind ik wel dat de melding pas na de CloseFile komt, maar dat is volgens mij compiler magic van Delphi, met als doel dat het bestand altijd gesloten wordt.
Pagina: 1