Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi /? Hilfe in der Konsole (https://www.delphipraxis.net/187019-hilfe-der-konsole.html)

GroZ 21. Okt 2015 11:05

Delphi-Version: 7

/? Hilfe in der Konsole
 
Ich möchte in mein Programm eine Hilfe einbauen (Konsole) und zwar mit dem befehl '/?'. Das ganze würde ich über eine IF anweisung lösen. Jetzt mein Problem Was muss ich schreiben das er die Hilfe bei dem Befehl öffnet und nur dann?

TiGü 21. Okt 2015 11:14

AW: /? Hilfe in der Konsole
 
Delphi-Quellcode:
if DeinEingabeText = '/?' then
begin
  OeffneHilfe;
end;
Das solltest du inzwischen aber auch schon selber draufhaben! :shock:

GroZ 21. Okt 2015 11:18

AW: /? Hilfe in der Konsole
 
Ja ich weiß.. manchmal vergess ich so etwas. Ist bei mir noch nicht drin im Kopf alles ^^.
Eine Frage noch bei "deinEingabeText" was kann ich da bei der Konsole nehmen? Writeln?

TiGü 21. Okt 2015 11:30

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von GroZ (Beitrag 1319307)
Eine Frage noch bei "deinEingabeText" was kann ich da bei der Konsole nehmen? Writeln?

Geh nochmal ganz tief in dich und überlege, ob man zum einlesen wirklich den Befehl Writeln nutzen kann.
Welche Tutorials hast du denn bisher angeschaut, um dich mit dem Thema Delphi und Konsole bekannt zu machen?

mm1256 21. Okt 2015 11:33

AW: /? Hilfe in der Konsole
 
Wenn du schon die Startparameter auswerten möchtest, dann mach es gleich richtig:

Delphi-Quellcode:

project Foo;

procedure ParseCommandLine;
var
  i: Integer;
begin
  for i := 1 to ParamCount do begin
    if ParamStr(i) = '/?' then begin
      WriteLn('Hilfe');
      ReadLn;
    end;
  end;
end;

begin
  ParseCommandLine;
  ...
end.

GroZ 21. Okt 2015 11:35

AW: /? Hilfe in der Konsole
 
Delphi-Quellcode:
 readln;
  eingabe := '/?';
  if Readln(eingabe)= true then
  begin
   Writeln('#0 - Kein Fehler aufgetreten');
   Writeln('#1 - Falscher Parameter');
   Writeln('#2 - PDF bereits vorhanden');
   Writeln('#3 - Konvertierung fehlgeschlagen');
   readln;
  end;
Das ist mein Quellcode. Es kommt der Fehler "inkompatible Typen"
Ist es vom Ansatz richtig?

Sir Rufo 21. Okt 2015 11:43

AW: /? Hilfe in der Konsole
 
Es gibt auch noch etwas Einfacheres zum Abprüfen:

Delphi-Referenz durchsuchenSysUtils.FindCmdLineSwitch

Ob es das aber schon unter Delphi 7 gab, kann ich nicht sagen ...

Klaus01 21. Okt 2015 12:00

AW: /? Hilfe in der Konsole
 
.. so wie ich das verstanden habe will der TE /? nicht als Parameter übergeben - sondern im Programm eingeben.

Delphi-Quellcode:
if Readln(eingabe)= true then
->
Delphi-Quellcode:
eingabe := readln;
if eingabe = '/?' then
Grüße
Klaus

p80286 21. Okt 2015 12:05

AW: /? Hilfe in der Konsole
 
bloß nicht!
Delphi-Quellcode:
readln(eingabe);
if eingabe = '/?' then
funktioniert zwar, aber ob es das ist was gewollt ist?
Gruß
K-H

Lemmy 21. Okt 2015 12:10

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von GroZ (Beitrag 1319312)
Ist es vom Ansatz richtig?

kann dir keiner sagen, so lange du nicht selbst sagst (und auch weißt) was du machen willst...

Hast Du ein Konsolenprogramm mit "Menü-Funktion" vergleichbar mit dem alten Norton commander für DOS, oder Midnightcommander, dann wäre readln richtig. Willst Du was wie git, format, dir, mkdir, ls oder dergleichen machen wäre das Parsen der Startparameter (ParamStr()) richtig.

Grüße

GroZ 21. Okt 2015 12:59

AW: /? Hilfe in der Konsole
 
Nein ich möchte in der Console /? schreiben und dann sollen die Codes für die Fehlermeldung kommen.
Ging mit diesem Codeschnipsel:
Delphi-Quellcode:
readln(eingabe);
  if eingabe = '/?' then
  begin

nahpets 21. Okt 2015 13:04

AW: /? Hilfe in der Konsole
 
Poste bitte mal den bisher vorhandenen Quelltext deines Konsolenprogrammes, damit wir eine Chance bekommen die Stelle zu identifizieren, an der Du eine Änderung vornehmen kannst und dir ggfls. einen verwertbaren Code-Schnipsel zur Verfügung stellen können.
Mir ist die Aufgabenstellung momentan noch etwas zu difus, um hier eine sinnvolle Antwort geben zu können.

GroZ 3. Nov 2015 08:01

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von Sir Rufo (Beitrag 1319313)
Es gibt auch noch etwas Einfacheres zum Abprüfen:

Delphi-Referenz durchsuchenSysUtils.FindCmdLineSwitch

Ob es das aber schon unter Delphi 7 gab, kann ich nicht sagen ...

Kannst du mir mal bitte ein Beispiel zeigen? Sprich wie ich von ParamStr den Parameter übergebe?
so?
Delphi-Quellcode:
FindCmdLineSwitch(ParamStr(1))

Sir Rufo 3. Nov 2015 08:08

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von GroZ (Beitrag 1320389)
Zitat:

Zitat von Sir Rufo (Beitrag 1319313)
Es gibt auch noch etwas Einfacheres zum Abprüfen:

Delphi-Referenz durchsuchenSysUtils.FindCmdLineSwitch

Ob es das aber schon unter Delphi 7 gab, kann ich nicht sagen ...

Kannst du mir mal bitte ein Beispiel zeigen? Sprich wie ich von ParamStr den Parameter übergebe?
so?
Delphi-Quellcode:
FindCmdLineSwitch(ParamStr(1))

Ja
Delphi-Quellcode:
if FindCmdLineSwitch( '?' ) then
  WriteLn( 'Ah, der Herr möchte die Hilfe sehen!' );
Das ist alles.

GroZ 3. Nov 2015 08:17

AW: /? Hilfe in der Konsole
 
Okay. Danke die hab ich gesucht. Damit kann ich ja dann auch Starparameter eingeben oder? Stand zumindest so in der Hilfe drin

Sir Rufo 3. Nov 2015 08:50

AW: /? Hilfe in der Konsole
 
Ob und was der Parameter für dich/deine Anwendung bedeutet, dass musst du programmieren.

Damit kannst du nur feststellen, ob der Parameter gesetzt wurde - oder eben nicht.

TiGü 3. Nov 2015 08:58

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von GroZ (Beitrag 1320392)
Okay. Danke die hab ich gesucht. Damit kann ich ja dann auch Starparameter eingeben oder? Stand zumindest so in der Hilfe drin

DAS ist dafür da, um Startparameter einzugeben.

baumina 3. Nov 2015 09:13

AW: /? Hilfe in der Konsole
 
Was ist mit "Startparameter eingeben" gemeint? :gruebel:

GroZ 3. Nov 2015 09:18

AW: /? Hilfe in der Konsole
 
Naja bei meinene Programm wird am Anfang das Verzeichnis eingegeben und dann werden PDF Dateien konvertiert. Bekomme zur Zeit noch den EFOpenError:lol:

baumina 3. Nov 2015 09:29

AW: /? Hilfe in der Konsole
 
Wenn dein Verzeichnis als Startparameter über die Kommandozeile mitgegeben wird und Leerzeichen beinhaltet, mache unbedingt Anführungszeichen drumrum.

Code:
MeinProgramm.exe "C:\Mein Verzeichnis"

GroZ 3. Nov 2015 09:35

AW: /? Hilfe in der Konsole
 
Ja das weiß ich kommt trotzdem noch :D.
Ich schreibs grade neu und schaue mal wie ich mit ParseCmdLineSwitch, ParamStr usw klar komme.

Sir Rufo 3. Nov 2015 09:50

AW: /? Hilfe in der Konsole
 
Ich wette mal, dass dein Problem an einer ganz anderen Stelle liegt und null,nix mit den Parametern zu tun hat.

Stell doch einfach mal die Frage zu deinem konkreten
Delphi-Quellcode:
EFOpenError
, dann könnten wir dir auch konkret helfen.

"Herr Doktor, ich habe am ganzen Körper Schmerzen. Wenn ich an den Kopf tippe, an das Knie, an den Bauch, einfach überall."
Diagnose: Finger gebrochen!

GroZ 3. Nov 2015 09:58

AW: /? Hilfe in der Konsole
 
Naja ich weiß halt nur nicht wie ich das Verzeichnis einlesen soll. Ich weiß das wenn ich das Verzeichnis habe. Das ich dann mit FindFirst und FindNext die FRP Dateien suchen muss und dann meine Routine ablaufen lassen muss.

Sir Rufo 3. Nov 2015 10:00

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von GroZ (Beitrag 1320405)
Naja ich weiß halt nur nicht wie ich das Verzeichnis einlesen soll. Ich weiß das wenn ich das Verzeichnis habe. Das ich dann mit FindFirst und FindNext die FRP Dateien suchen muss und dann meine Routine ablaufen lassen muss.

Du weisst, dass dabei in dem
Delphi-Quellcode:
TSearchRec
der Dateiname ohne Pfad enthalten ist?
(Was man mit dem Debugger sehr leicht feststellen kann/könnte)

Und in der Dokumentation steht es auch
http://docwiki.embarcadero.com/Libra...ils.TSearchRec

GroZ 3. Nov 2015 10:08

AW: /? Hilfe in der Konsole
 
Also brauche ich FindFirst und FindNext gar nicht?

p80286 3. Nov 2015 10:08

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von baumina (Beitrag 1320402)
Wenn dein Verzeichnis als Startparameter über die Kommandozeile mitgegeben wird und Leerzeichen beinhaltet, mache unbedingt Anführungszeichen drumrum.

Code:
MeinProgramm.exe "C:\Mein Verzeichnis"

Naja je nach Delphi Version ist das nicht mehr als ein Hinweis, daß es sich nicht um 2 oder mehr Parameter handelt sondern um einen, da ist dann schon der Programmierer gefragt.

Gruß
K-H

GroZ 3. Nov 2015 10:12

AW: /? Hilfe in der Konsole
 
Ich brauche nur ein Parameter beispielsweise "C:\Alte Dateien\FRP\2010"
Mit diesem Parameter möchte ich dann alle FRP Dateien die in dem Verzeichnis sind konvertieren.
Der Parameter soll in der Konsole eingegeben werden.

Sir Rufo 3. Nov 2015 10:45

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von GroZ (Beitrag 1320407)
Also brauche ich FindFirst und FindNext gar nicht?

Einmal in der Dokumentation auf Codebeispiele geklickt und wie durch Zauberhand kommt ...
http://docwiki.embarcadero.com/CodeE...t_%28Delphi%29

p80286 3. Nov 2015 11:28

AW: /? Hilfe in der Konsole
 
Also Gut, nehmen wir mal an, daß wirklich nur der Startpfad übergeben wird.
Delphi-Quellcode:
startpfad:='';
for i:=1 to paramcount do
  startpfad:=startpfad+' '+paramstr[i];
if (length(startpfad)>0) and (startpfad[1]='"') then
    delete(startpfad,1,1);
if (length(startpfad)>0) and (startpfad[length(startpfad)]='"') then
    delete(startpfad,length(startpfad),1);
so ungefähr sollte es funktionieren.
Wenn u.U. auch noch "/?" oder "-H" übergeben werden sollte, dann mußt Du Dir da etwas einfallen lassen.

Gruß
K-H

P.S.
Natürlich brauchst Du Findfirst/Findnext, wie willst Du sonst an die Dateinamen kommen?
OK mit Opendialog ginge das auch, wenn man klickwütig ist.

Sir Rufo 3. Nov 2015 11:40

AW: /? Hilfe in der Konsole
 
@p80286

Die Quote-Chars werden automatisch entfernt, bzw. erst gar nicht an die Anwendung übergeben.

CmdLineParamStr(1)ParamStr(2)
foo.exe "C:\MeinPfad"C:\MeinPfad 
foo.exe C:\MeinPfadC:\MeinPfad 
foo.exe "C:\Mein Pfad"C:\Mein Pfad 
foo.exe C:\Mein PfadC:\MeinPfad

p80286 3. Nov 2015 13:21

AW: /? Hilfe in der Konsole
 
Zitat:

Zitat von Sir Rufo (Beitrag 1320423)
@p80286

Die Quote-Chars werden automatisch entfernt, bzw. erst gar nicht an die Anwendung übergeben.

:oops:Mann ist das lange her das ich das genutzt habe:oops:
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 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