Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aktuelle Zeile auslesen ... (https://www.delphipraxis.net/56847-aktuelle-zeile-auslesen.html)

jim_raynor 12. Nov 2005 12:10

Re: Aktuelle Zeile auslesen ...
 
Zitat:

Zitat von Nils_13
Was brinbgt mir außerdem der Debugger ? Es tauchen ja keine Fehler auf.

Weil man mit dem Debugger auch Werte von Variablen anzeigen kann ... und so den Fehler auf die Schliche kommt.

marabu 12. Nov 2005 12:31

Re: Aktuelle Zeile auslesen ...
 
Du könntest eine Befehlsliste verwenden:

Delphi-Quellcode:
var
  CommandList: TStringList;

begin
  CommandList := TStringList.Create;
  with CommandList do
  begin
    Sorted := true;
    CaseSensitive := false;
    Add('#exit');
    Add('#pause');
    // ...
  end;
end;
Und später dann prüfst du so:

Delphi-Quellcode:
if CommandList.IndexOf(command) >= 0 
  then // gültiger Befehl
  else // ungültiger Befehl
;
marabu

Nils_13 12. Nov 2005 12:43

Re: Aktuelle Zeile auslesen ...
 
Zitat:

Zitat von marabu
Du könntest eine Befehlsliste verwenden:

Delphi-Quellcode:
var
  CommandList: TStringList;

begin
  CommandList := TStringList.Create;
  with CommandList do
  begin
    Sorted := true;
    CaseSensitive := false;
    Add('#exit');
    Add('#pause');
    // ...
  end;
end;
Und später dann prüfst du so:

Delphi-Quellcode:
if CommandList.IndexOf(command) >= 0 
  then // gültiger Befehl
  else // ungültiger Befehl
;
marabu

Und wie willst du überprüfen, ob der Befehl gültig oder ungültig ist ?

Die Muhkuh 12. Nov 2005 12:44

Re: Aktuelle Zeile auslesen ...
 
Weil der Befehl dann nicht in der Liste steht? :roll:

Nils_13 12. Nov 2005 12:47

Re: Aktuelle Zeile auslesen ...
 
Zitat:

Zitat von Spider
Weil der Befehl dann nicht in der Liste steht? :roll:

Ach nee :roll: Aber wie macht man das mit Delphi ?
-
Ach ich idiot ... schon gut.
-
Nur was ist dann Comman bei dem Indexof ?

malo 12. Nov 2005 12:56

Re: Aktuelle Zeile auslesen ...
 
Zitat:

Zitat von Nils_13
Nur was ist dann Comman bei dem Indexof ?

Ein wenig Nachdenken schadet doch bestimmt nicht? Ich würde vorschlagen, das ist deine aktuelle Zeile, die dann geprüft wird :roll:

Nils_13 12. Nov 2005 13:19

Re: Aktuelle Zeile auslesen ...
 
Delphi-Quellcode:
procedure TForm1.ConsoleKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  iLine: integer;
  CommandList: TStringList;

begin
  CommandList := TStringList.Create;
  with CommandList do
  begin
    Sorted := true;
    CaseSensitive := false;
    Add('#exit');
    Add('#pause');
  end;
  iLine := Console.Perform(EM_LINEFROMCHAR, -1, 0);

{  // #exit
  if (Key = VK_Return) and (LowerCase(Console.Lines[iLine]) = '#exit') then
    Application.Terminate;
  if not (Key = VK_Return) and (LowerCase(Console.Lines[iLine]) = '#exit') then
    Console.Lines.Add('Befehl konnte nicht gefunden werden.');    }
  if CommandList.IndexOf(IntToStr(iLine)) >= 0
  then // gültiger Befehl
  else Console.Lines.Add('Ungültiger Befehl');
  ;
end;
Jetzt kann ich halt kein #exit mehr eintippen, da alles vollgemüllt wird.

malo 12. Nov 2005 13:22

Re: Aktuelle Zeile auslesen ...
 
Delphi-Quellcode:
if CommandList.IndexOf(IntToStr(iLine)) >= 0
  then // gültiger Befehl
  else Console.Lines.Add('Ungültiger Befehl');
Jetzt schaust du dir mal den Sourcecode an, und gehst dich danach schämen.

Aber immerhin eine Leistung, zweimal den selben Fehler zu machen :thumb:

marabu 12. Nov 2005 13:32

Re: Aktuelle Zeile auslesen ...
 
Nils, meinst du nicht auch, dass deine CommandList besser in dem Ereignis OnCreate() der Form aufgebaut wird? Sie ändert sich ja nicht bei jedem Tastendruck. Auch ist mein Code für die Überprüfung eines Befehls eher beispielhaft. Du musst dir da schon noch ein paar eigene Gedanken machen. Deine Befehle werden vielleicht nicht immer alle einsam und alleine in einer Zeile stehen - oder?

Freundliche Grüße vom marabu

Nils_13 12. Nov 2005 14:03

Re: Aktuelle Zeile auslesen ...
 
Zitat:

Zitat von malo
Delphi-Quellcode:
if CommandList.IndexOf(IntToStr(iLine)) >= 0
  then // gültiger Befehl
  else Console.Lines.Add('Ungültiger Befehl');
Jetzt schaust du dir mal den Sourcecode an, und gehst dich danach schämen.

Aber immerhin eine Leistung, zweimal den selben Fehler zu machen :thumb:

Geh du dich mal für deine Besserwisserei schämen, du hast es ja nicht nur zweimal gemacht :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.
Seite 2 von 3     12 3      

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