Argumente übergeben
-
Nur ne kurze Frage! Wie bekommt man bei einem Programm, das mit der BCB-IDE geschrieben wurde, die Argumente raus? Eine main()-Funktion gibt es da ja nicht oder ist die nur wo anders???
-
ParamStr() hilft weiter -> Hilfe nachschlagen... vor Allem auch "Siehe auch" ist recht spannend!
-junix
-
Juhu das war's! Vielen Dank...
-
ParamStr() hat Probleme mit Parametern die Leerzeichen enthalten, z.B. bei Dateipfaden. Dann könntest Du CmdLine benutzen, musst aber die einzelnen Parameter selbst parsen. Oder gibt es in der VCL Funktionen dafür?
-
nirsaja schrieb:
Eine main()-Funktion gibt es da ja nicht oder ist die nur wo anders???
Die ist "woanders". Gehst du auf "Ansicht->Projekt-Quelltext", dann siehst du sie.
-
bIce schrieb:
ParamStr() hat Probleme mit Parametern die Leerzeichen enthalten, z.B. bei Dateipfaden.
Genau wie jede andere diesbezügliche Funktion. Ist ja auch logisch, schliesslich ist das Leerzeichen das vereinbarte Trennzeichen.
Abhilfe: den Parameter in Anführungszeichen einschliessen.
-
Jansen schrieb:
Abhilfe: den Parameter in Anführungszeichen einschliessen.
Das halte ich nicht für die beste Idee; daran ist der User nicht gewohnt. Besser die ParamStrings mit GetModuleFileName() abgleichen, oder gleich letztere Funktion und die C-String-Funktionen benutzen.
-
WebFritzi schrieb:
daran ist der User nicht gewohnt
Sollte er eigentlich, schliesslich ist das z.B. beim 'Ziel'-Feld von Desktop-Verknüpfungen genauso notwendig.
Und es gibt auch keine Alternative. Denn wenn das das Programm mehr als einen Parameter akzeptiert, dann wäre es ohne Anführungszeichen unmöglich, festzustellen, ob der User z.B. einen Pfad mit Leerzeichen übergibt oder eben doch zwei Parameter. Da hilft auch kein manuelles Parsen.
-
Wie wär's mit Suchen nach dem letzten Backslash?
-
Jansen schrieb:
bIce schrieb:
ParamStr() hat Probleme mit Parametern die Leerzeichen enthalten, z.B. bei Dateipfaden.
Genau wie jede andere diesbezügliche Funktion. Ist ja auch logisch, schliesslich ist das Leerzeichen das vereinbarte Trennzeichen.
Abhilfe: den Parameter in Anführungszeichen einschliessen.Stimmt schon, nur wenn man ein Programm in der Registry einer bestimmten Endung zuordnet, dann werden diese Anführungszeichen nicht angehängt. Vielleicht erstelle ich auch falsche Einträge:
HKEY_CLASSES_ROOT\\Shell\TestProg\ = "TestProgramm..."
HKEY_CLASSES_ROOT\\Shell\TestProg\command\ = "d:\borland\cbuilder5\projects\project1.exe %L"