Dat blijkt

Met breakpoints kun je debuggen. Je klikt met je muis in de kantlijn bij de regel waar je proggie moet stoppen, deze regel wordt dan (met de default kleureninstelling) rood, en er staat een rode punt in de kantlijn.
Als je nu runt, dan stopt je programma daar, en kun je, door met je muis te hoveren boven een variabele, kijken wat de waarde daarvan is. Ook kun je zo'n variabele als watch toevoegen (ergens in het menu, "add watch" en dan de naam van de variabele geven, @runtime zie je dan dynamisch wat de waarde ervan is.
Is je proggie eenmaal gestopt bij het breakpoint, dan kun je gaan steppen. Met F7 en F8 ga je 1 regel verder. Verschil tussen beiden is dat F7 functieaanroepen volgt, en F8 die regel uitvoert en dan weer terugkomt. Als je dus op een regel Foo(var) aanroept, zal F7 je regel voor regel door Foo heen laten lopen, terwijl F8 Foo(var) zal uitvoeren en het programma weer stopt op de regel na je aanroep.
Met F9 run je je programma weer.
Met je code is zo op het eerste gezicht niets mis.
Ik vind hem persoonlijk redelijk onoverzichtelijk, maar dat zal meer een puntje van stijl zijn

Wasigh (oud mod PW) heeft eens een hele mooie codestandaard gepost, was meen ik zelfs nog ooit sticky.
Even een paar puntjes voor de overzichtelijkheid:
• Witregels op het moment dat je iets anders gaat doen
• Alle
:= recht onder elkaar
• Maak gebruik van [*code=Delphi] ipv [*code]
maakt het al een stuk overzichtelijker:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| procedure TFOrderregel.BPrintClick(Sender: TObject);
var Adres,
Postcode,
Plaats,
Automerk,
Automodel,
Kenteken : String;
Onderdeelnummer,
Aantal : Integer;
Stukprijs,
Bedrag : Real;
begin
QKlanten.Active := false;
QOrders.Active := false;
QOrdReg.Active := false;
QKlanten.ParamByName('Klantnr').Value := StrToInt(EKlantnr.Text);
QOrders.ParamByName('Ordnr').Value := StrToInt(EOrdnr.Text);
QOrdReg.ParamByName('OrdRegnr').Value := StrToInt(EOrdnr.Text);
QKlanten.Active := true;
QOrders.Active := true;
QOrdReg.Active := true;
Adres := QKlantenAdres.Value;
Postcode := QKlantenPostcode.Value;
Plaats := QKlantenPlaats.Value;
Automerk := QKlantenAutomerk.Value;
Automodel := QKlantenAutoModel.Value;
Kenteken := QKlantenKenteken.Value;
AssignFile(Factuur, 'Factuur.txt');
try
Rewrite(Factuur);
WriteLn(Factuur,'Factuur Autogaragebedrijf Schasfoort Wierden');
WriteLn(Factuur,'Datum: '+DateToStr(Date));
WriteLn(Factuur,'');
WriteLn(Factuur,'Klantnummer: '+EKlantnr.Text);
WriteLn(Factuur,'Gegevens:');
WriteLn(Factuur,ENaamPanel.Text);
WriteLn(Factuur,Adres);
WriteLn(Factuur,Postcode+' '+Plaats);
WriteLn(Factuur,Automerk+' '+AutoModel);
WriteLn(Factuur,Kenteken);
WriteLn(Factuur,'');
WriteLn(Factuur,'--------------------------------------------');
WriteLn(Factuur,'');
WriteLn(Factuur,'Ordernummer: '+EOrdnr.Text);
WriteLn(Factuur,'Datum onderhoud: '+EDatum.Text);
WriteLn(Factuur,'');
WriteLn(Factuur,'--------------------------------------------');
WriteLn(Factuur,'');
WriteLn(Factuur,'Onderdeelnummer: '+'Aantal: '+'Stukprijs: '+'Bedrag: ');
QOrdreg.First;
while not QOrdReg.EoF do
begin
Onderdeelnummer := QOrdRegOnderdeelnr.Value;
Aantal := QOrdRegAantal.Value;
Stukprijs := QOrdRegStukprijs.Value;
Bedrag := QOrdRegBedrag.Value;
WriteLn(Factuur, IntToStr(Onderdeelnummer) +
' ' +
IntToStr(Aantal) +
' ' +
FloatToStr(Stukprijs) +
' ' +
FloatToStr(Bedrag));
QOrdReg.Next;
end;
WriteLn(Factuur,'');
WriteLn(Factuur,'--------------------------------------------');
WriteLn(Factuur,'');
WriteLn(Factuur,'Totaalbedrag factuur: '+ETotaalprijs.Text);
finally
CloseFile(Factuur);
end;
QOrdReg.Active := false;
end; |
Misschien mierens*x, maar als je het over een half jaar of een jaar weer onder ogen krijgt dan zul je door nu een klein beetje extra moeite te nemen, dan een hoop tijd besparen.
Oh ja, en een try..finally erbij

ALS hij er ergens uitklapt (al zie ik zo geen spannende dingen) dan hou je op je oude manier een niet gesloten file over, en dan gaat Scandisk weer zeuren en zo
Maar hij kan er nu bijvoorbeeld ook uitklappen bij de ParamByName-regels, of specifieker, bij StrToInt. Je gaat er klakkeloos vanuit dat de gebruiker ook echt een getal invult. Vul maar eens "Bla" oid in bij EKlantnr: *BAM* exception

Maar goed, daar ging dit topic niet over
[
Voor 64% gewijzigd door
Paul op 21-01-2003 00:27
]