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 3 von 3     123   
Nils_13

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

Re: Aktuelle Zeile auslesen ...

  Alt 13. Nov 2005, 09:38
Ich bin auf eine andere Methode fast zum Ergebnis gekommen.
Delphi-Quellcode:
procedure TForm1.ConsoleKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  iLine: integer;
begin
  iLine := Console.Perform(EM_LINEFROMCHAR, -1, 0);

  if Key = VK_RETURN then
  begin
    if LowerCase(Console.Lines[iLine]) = '#exit'  then
      Application.Terminate;

    if LowerCase(Console.Lines[iLine]) = '#helpthen
    begin
      with Console.Lines do
      begin
        Add('');
        Add('');
        Add('#help = ruft die Hilfe auf');
        Add('#exit = beendet das Programm');
        Add('#opencd = öffnet das CD-Laufwerk');
        Add('#closecd = schließt das CD-Laufwerk');
        Add('');
      end;
    end;

    if LowerCase(Console.Lines[iLine]) = '#opencdthen
    begin
      mciSendString('Set cdaudio door open wait', Nil, 0, Handle);
    end;
    if LowerCase(Console.Lines[iLine]) = '#closecdthen
    begin
      mciSendString('Set cdaudio door closed wait', Nil, 0, Handle);
    end
    else
      Console.Lines.Add('Unbekannter Befehl');
      Console.Lines.Add('');
  end;
end;
Das Problem ist, wenn ich opencd und closecd eingebaut habe wird zwar jeder Befehl augeführt, es kommt aber hinter jedem Befehl 'Unbekannter Befehl'. Wenn ich opencd und closecd nicht eingebaut habe tritt der Fehler nicht auf.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

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

Re: Aktuelle Zeile auslesen ...

  Alt 13. Nov 2005, 09:42
Hi,

ganz spontan würde ich sagen:

Delphi-Quellcode:
procedure TForm1.ConsoleKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  iLine: integer;
begin
  iLine := Console.Perform(EM_LINEFROMCHAR, -1, 0);

  if Key = VK_RETURN then
  begin
    if LowerCase(Console.Lines[iLine]) = '#exit'  then
      Application.Terminate
    else
    if LowerCase(Console.Lines[iLine]) = '#helpthen
    begin
      with Console.Lines do
      begin
        Add('');
        Add('');
        Add('#help = ruft die Hilfe auf');
        Add('#exit = beendet das Programm');
        Add('#opencd = öffnet das CD-Laufwerk');
        Add('#closecd = schließt das CD-Laufwerk');
        Add('');
      end;
    end
    else // <<
    if LowerCase(Console.Lines[iLine]) = '#opencdthen
    begin
      mciSendString('Set cdaudio door open wait', Nil, 0, Handle);
    end
    else // <<
    if LowerCase(Console.Lines[iLine]) = '#closecdthen
    begin
      mciSendString('Set cdaudio door closed wait', Nil, 0, Handle);
    end
    else
      Console.Lines.Add('Unbekannter Befehl');
      Console.Lines.Add('');
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#23

Re: Aktuelle Zeile auslesen ...

  Alt 13. Nov 2005, 10:17
Nils, ich würde mir an deiner Stelle mal die Grundlagen ansehen. Ein else bezieht sich nicht auf die Prozedur, so wie du es oben glaubst, sondern auf das if.
Also:

Delphi-Quellcode:
if Key = VK_RETURN then
begin
  if LowerCase(Console.Lines[iLine]) = '#exit'  then
    Application.Terminate;

  if LowerCase(Console.Lines[iLine]) = '#helpthen //Hier wäre doch ein else if besser
  begin
    (...)
  end;

  if LowerCase(Console.Lines[iLine]) = '#opencdthen //Auch hier wäre ein else if besser
  begin
    mciSendString('Set cdaudio door open wait', Nil, 0, Handle);
  end;
  if LowerCase(Console.Lines[iLine]) = '#closecdthen //Und nochmals else if
  begin
    mciSendString('Set cdaudio door closed wait', Nil, 0, Handle);
  end
  else //Dieses else wird sonst immer ausgeführt, wenn >>LowerCase(Console.Lines[iLine]) = '#closecd'<< nicht zutrifft.
    Console.Lines.Add('Unbekannter Befehl');
    Console.Lines.Add(''); //Nur am Rande bemerkt: Diese Zeile gehört nicht eingerückt, die gehört nicht zum else.
end;
Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Nils_13

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

Re: Aktuelle Zeile auslesen ...

  Alt 13. Nov 2005, 10:56
Danke.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 08: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