Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Mehere Zeilen in der IF-Anweisung
Shadowdragon - Sa 01.03.03 21:49
Titel: Mehere Zeilen in der IF-Anweisung
Folgendes:
Ich habe eine IF-Anweisung, die so aussieht:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if idftp1.Connected = true then DeleteFile(pfad) idftp1.Get('chatlog.txt' , pfad) memo1.clear memo1.Lines.LoadFromFile(pfad) else DeleteFile(pfad) idftp1.Connect idftp1.Get('chatlog.txt' , pfad) memo1.clear memo1.Lines.LoadFromFile(pfad); end; |
Jetzt mal die Unhandlichkeit ausser Acht gelassen :wink:
Jedesmal, wenn ich das Programm starten will, beschwert es sich, dass die Semikoli (?) fehlen.... wenn ich sie jedoch setze, beschwert sich das ELSE, dass vor ihm kein Semikolon stehen darf!
Kann es sein, dass IF-Anweisungen nur 1 Zeile verarbeiten können? (was aber reichlich beschränkt wäre)
...oder was mache ich da falsch?
Danke!
UGrohne - Sa 01.03.03 21:55
Titel: Re: Mehere Zeilen in der IF-Anweisung
| Shadowdragon hat folgendes geschrieben: |
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if idftp1.Connected = true then DeleteFile(pfad) idftp1.Get('chatlog.txt' , pfad) memo1.clear memo1.Lines.LoadFromFile(pfad) else DeleteFile(pfad) idftp1.Connect idftp1.Get('chatlog.txt' , pfad) memo1.clear memo1.Lines.LoadFromFile(pfad); end; |
|
is logisch: Erstens führst Du nur eine Anweisung nach dem then aus, wenn Du einen Anweisungsblock ausführen lassen willst, musst du begin und end setzen.
Zweitens: Das Semikolon wird nur vor dem else weggelassen, sonst brauchst Du's immer.
heißt im Endeffekt, er weiß gar nicht , was nach dem then alles ausgeführt werden soll. bzw. er (ioch nehm jetzt nur die erste if-Funktion) führtdas Deletfile aus, wenn idftp1 connected ist, aber was danach kommt, macht er auf JEDEN Fall, genauso bei der zweiten if-Bedingunge.
Korrekt müsste es folgendermaßen heißen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| if idftp1.Connected = true then begin DeleteFile(pfad); idftp1.Get('chatlog.txt' , pfad); memo1.clear; memo1.Lines.LoadFromFile(pfad); end else begin DeleteFile(pfad); idftp1.Connect; idftp1.Get('chatlog.txt' , pfad); memo1.clear; memo1.Lines.LoadFromFile(pfad); end; |
Ich hoffe, Du siehst den Unterschied. Nur vor dem else kein Semikolon
Gruß
BungeeBug - Sa 01.03.03 21:56
nop es gehen auch mehr
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| if idftp1.Connected = true then BEGIN <--- WICHTIG DeleteFile(pfad) idftp1.Get('chatlog.txt' , pfad) memo1.clear memo1.Lines.LoadFromFile(pfad) END <- AUCH WICHTIG ohne ";" else BEGIN <-- GENAU SO WICHTIG DeleteFile(pfad) idftp1.Connect idftp1.Get('chatlog.txt' , pfad) memo1.clear memo1.Lines.LoadFromFile(pfad); END; <-- Noch wichtiger ... MIT ";" end; |
MfG BungeeBug
@ UGrohen ... wenn ich dich kriege ... du sniperst doch nur nach meinen Beiträgen um dann schneller zu antworten :P
Shadowdragon - Sa 01.03.03 21:58
Ihr seid die Retter in der Not,
im Arktismeer mein Gummiboot :D :D
DANKE! Hätt ich selbst drauf kommen müssen >_>
((Bin zuviel an QBASIC gewöhnt....das waren noch Zeiten :D))
UGrohne - Sa 01.03.03 21:58
Ätsch war schneller :P
Auch, wenn cih mir net viel Zeit zum Ausformulieren genommen hab.
Gruß an die Bugs *g* haste wieder Deine Mails bekommen?
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!