Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Programmschritt wird übersprungen..warum?...
Stinger47 - Mo 01.01.07 02:53
Titel: Programmschritt wird übersprungen..warum?...
hi erstma..^^
es soll OnFormCreate überprüft werden ob irgendeine zeile des RichEditfelds dem aktuellen datum entspricht..
das datum falls vorhanden steht immer alleine in einer zeile....
Delphi-Quelltext
72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96:
| { ... } begin
k:= RichEdit1.GetTextLen; richedit1.Lines.LoadFromFile('c:\abcde.abc');
for I := 0 to RichEdit1.Lines.Count do begin if RichEdit1.Lines[i] = DateToStr(Now) then begin Flag := False; if RichEdit1.Lines[k] <> '' then begin RichEdit1.Text := RichEdit1.Text + #13#10; end; RichEdit1.SelStart:= RichEdit1.GetTextLen; Exit; end else Flag := True; end; end; |
Zeile 84 überspringt er und geht gleich in zeile 85 aber die zeile ist wichtig....
wenn ich die if-anweisung auskommentiere arbeitet er uch zeile 84 ab sonst net....
thx schonma im voraus...:)
jaenicke - Mo 01.01.07 04:56
Hmm, eigentlich sollte das schon abgearbeitet werden. Bist du sicher, dass danach Flag immer noch True ist? Vielleicht sieht es nur im Debugger so aus als würde das übersprungen werden.
Ach so: Wenn Flag eine lokale Variable ist, dann wird die Anweisung natürlich nicht ausgeführt, weil der Compiler merkt, dass die nix bringt. Schließlich würde der Wert bei einer lokalen Variable ja nie verwendet. Aber ich gehe mal davon aus, dass das eine globale Variable ist, alkso eine, die nicht nur in der Prozedur vorhanden ist.
Stinger47 - Mo 01.01.07 05:18
Danke hat funktioniert..^^
hatte sie auf lokal und net global nun macht ers aber nun haperts immernoch woanders aba komt in nen neuen post...
dank dir und frohes neues..;)
jaenicke - Mo 01.01.07 05:26
Dir auch ein frohes neues Jahr.
Und noch ne kleine Erklärung hinterher, falls dir das folgende nicht klar sein sollte...
Wenn du eine Variable lokal deklarierst, dann existiert sie nur so lange wie die Prozedur ausgeführt wird. Sie wird also praktisch vor der Ausführung angelegt und direkt danach gelöscht (einfach gesagt). Bei der nächsten Ausführung ist der Wert einer lokalen Variablen dann nicht der, den sie zuletzt bei der letzten Ausführung hatte!
Bis zur ersten Zuweisung ist der Wert einer lokalen Variablen bei jeder Ausführung der Prozedur undefiniert.
Popov - Mo 01.01.07 09:43
1.) Auch wenn solche Sätze lustig aussehen, sie sind unheimlich schwer zu lesen:
Zitat: |
hatte sie auf lokal und net global nun macht ers aber nun haperts immernoch woanders aba komt in nen neuen post... |
Du tust dir mit net, aba, ers usw. keinen Gefallen, weil du Gefahr läufst, daß einige Leute sich sowas nicht antun und erst garnicht zu ende durchlesen. Dann machst du es aber auch denen schwer die helfen wollen, aber diesen Unsinn lesen müssen. Sowas ist lustig bei OffTopic, aber nicht im ersten Gespräch.
2.) Entweder du hast einen verkürzten Code oder die Variable Falg hat keinen Sinn. In diesem Fall bringt es nichts sie global zu machen. Und laut dem Code den man hier sehen kann ist Flag zu nichts nütze. In 99,99% aller Fälle erkennt der Compiler schon richtig ob eine Variable nötig ist und entfernt unsinnige oder unnötige Zeile. Also, nicht global machen, sondern ganz entfernen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!