AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aktuelle Zeile auslesen ...

Ein Thema von Nils_13 · begonnen am 12. Nov 2005 · letzter Beitrag vom 13. Nov 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#11

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 12:10
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 12:31
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
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#13

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 12:43
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#14

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 12:44
Weil der Befehl dann nicht in der Liste steht?
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#15

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 12:47
Zitat von Spider:
Weil der Befehl dann nicht in der Liste steht?
Ach nee Aber wie macht man das mit Delphi ?
-
Ach ich idiot ... schon gut.
-
Nur was ist dann Comman bei dem Indexof ?
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#16

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 12:56
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
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#17

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 13:19
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.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#18

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 13:22
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#19

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 13:32
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
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#20

Re: Aktuelle Zeile auslesen ...

  Alt 12. Nov 2005, 14:03
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
Geh du dich mal für deine Besserwisserei schämen, du hast es ja nicht nur zweimal gemacht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz