![]() |
Aktuelle Zeile auslesen ...
Hi,
ich lese mit diesem Code die Zeile aus in der ich mich befinde
Delphi-Quellcode:
Der ganze Code:
i := 0; i2 := 0;
while i < Memo1.Lines.Count do begin Inc(i2, Length(Memo1.Lines.Strings[i])); if i2 < Memo1.SelStart then Break; Inc(i); end;
Delphi-Quellcode:
Warum passiert nichts, wenn ich '#exit' eintippe und Return drücke ?
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); var i, i2: integer; begin i := 0; i2 := 0; while i < Memo1.Lines.Count do begin Inc(i2, Length(Memo1.Lines.Strings[i])); if i2 < Memo1.SelStart then Break; Inc(i); end; if Key = VK_Return then begin if LowerCase(IntToStr(i)) = '#exit' then Application.Terminate; end; end; |
Re: Aktuelle Zeile auslesen ...
Lowercase(i) wird auch nie #exit ergeben ;) Müsste ehr Lowercase(Memo1.Lines[i]) heissen, nicht wahr ;)
|
Re: Aktuelle Zeile auslesen ...
Delphi-Quellcode:
Läuft immer noch nicht.
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); var i, i2: integer; begin i := 0; i2 := 0; while i < Memo1.Lines.Count do begin Inc(i2, Length(Memo1.Lines.Strings[i])); if i2 < Memo1.SelStart then Break; Inc(i); end; if Key = VK_Return then begin if Lowercase(Memo1.Lines[i]) = '#exit' then Application.Terminate; end; end; |
Re: Aktuelle Zeile auslesen ...
Wie wäre es, wenn du einfach mal den Debugger zur Hand nimmst und die Variableninhalte prüfst?
|
Re: Aktuelle Zeile auslesen ...
Hi,
überleg mal bitte: wenn du Enter drückst (=> in die nächste Zeile springst), prüfst du den Inhalt dieser neuen Zeile auf den Wert #exit. Aber im Normalfall steht in dieser Zeile ja noch nichts, weil du gerade erst in sie reingesprungen bist/sie erzeugt hast. Wo musst du also den Wert überprüfen? Auf jeden Fall nicht in der i. Zeile. Chris |
Re: Aktuelle Zeile auslesen ...
... sondern in der i-1 Zeile.
|
Re: Aktuelle Zeile auslesen ...
Zitat:
Delphi-Quellcode:
Passiert nichts. Was brinbgt mir außerdem der Debugger ? Es tauchen ja keine Fehler auf.
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); var i, i2: integer; begin i := 0; i2 := 0; while i < Memo1.Lines.Count do begin Inc(i2, Length(Memo1.Lines.Strings[i])); if i2 < Memo1.SelStart then Break; Inc(i); end; if Key = VK_Return then begin if Lowercase(Memo1.Lines[i-1]) = '#exit' then Application.Terminate; end; end; |
Re: Aktuelle Zeile auslesen ...
Hallo Nils,
kommst du damit zurecht?
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.MemoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); var iLine: integer; begin iLine := Memo.Perform(EM_LINEFROMCHAR, -1, 0); if (Key = VK_Return) and (LowerCase(Memo.Lines[iLine]) = '#exit') then Application.Terminate; end; |
Re: Aktuelle Zeile auslesen ...
Zitat:
Wie könnte ich es machen, dass überprüft wird, ob es die Befehle überhaupt gibt ? Ich könnte es ja über eine Textdatei machen, in der alle Befehle stehen. Aber wie vergleiche ich das dann ? Dadurch wird der Code auch allgemein kleiner, da ich die if Abfragen nicht mehr für jeden Befehl benötige. |
Re: Aktuelle Zeile auslesen ...
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz