Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Startparameter (Ordner angeben + Dateiname) (https://www.delphipraxis.net/167762-startparameter-ordner-angeben-dateiname.html)

Back2Code 17. Apr 2012 09:06

Delphi-Version: 5

Startparameter (Ordner angeben + Dateiname)
 
Guten Tag DP,

hab schon eine Menge wie die Delphi Hilfe & Google gefragt nur wirklich weitergekommen bin ich noch nicht.

Mein Problem ist folgendes :

Ich habe vor bei einer Konsolanwendung 2 Parameter zu verwenden. Zum einen soll man den Folder angeben & als 2ten parameter den dateinamen.

Als beispiel :

test.exe -C:\test\ -test.jpg

Wie kann ich das nun verwirklichen?

:)

DeddyH 17. Apr 2012 09:09

AW: Startparameter (Ordner angeben + Dateiname)
 
Delphi-Referenz durchsuchenParamStr und Delphi-Referenz durchsuchenParamCount sind Deine Freunde.

Back2Code 17. Apr 2012 09:16

AW: Startparameter (Ordner angeben + Dateiname)
 
So weit bin ich auch schon gewesen :) Es blick nur noch nicht ganz wie ich das ganze jetzt im Code verwirkliche.

himitsu 17. Apr 2012 09:16

AW: Startparameter (Ordner angeben + Dateiname)
 
Es gibt auch die Eine oder Andere komponente, wenn man mehr braucht und nicht alles selber machen will.
z.B. http://www.delphipraxis.net/151755-p...-auslesen.html

Tipp: Versuch mal sowas wie "prüfe, ob der Parameter -E vorhanden ist" ... dann mußt du erstmal alle Params einzeln danach durchsuchen und womöglich auch noch auf die Groß-/Kleinschreibung achten.

Zitat:

Es blick nur noch nicht ganz wie ich das ganze jetzt im Code verwirkliche.
Und wo genau ist das Problem?

Das sind zwei total einfache Funktionen, wozu auch noch alles in der OH erklärt wird.
Es gibt sogar einige Tutorils dafür und im Forum lassen sich bestimmt genug Beispiele finden.

Hast du schonmal mit einem Memo oder einer TStringList gearbeitet?
Das ist genau das selbe Prinzip, beim Zugriff auf die einzelnen Werte/Zeilen.

Back2Code 17. Apr 2012 09:32

AW: Startparameter (Ordner angeben + Dateiname)
 
Also soweit ich das jetzt verstanden habe geht das so :

WriteLn(ParamStr(0)); = Ausgabe des Pfades in der sich das Programm befindet

ParamStr(1); = Wäre dann der 1 Paramter z.b test.exe C:\test !?

|
V

ParamStr(1) := 'C:\test'

Und jetzt könnte ich mit dem parameter 1 arbeiten oder?

himitsu 17. Apr 2012 09:38

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von Robin2k (Beitrag 1162229)
WriteLn(ParamStr(0)); = Ausgabe des Pfades in der sich das Programm befindet

Delphi-Quellcode:
WriteLn(ParamStr(0)); // Dateiname und Pfad der Anwendung
WriteLn(ExtractFilePath(ParamStr(0))); // Pfad der Anwendung (mit Backslash am Ende)
WriteLn(ExtractFileDir(ParamStr(0))); // Verzeichnis der Anwendung (ohne)
Ansonsten ... jupp, stimmt.


Man muß nur Bedenken, daß die Längenangabe wie bei einem String ist.
> die 0 ignorieren wir einfach (ist ja auch kein Parameter)
> und dann von 1 bis ParamCount

Und es gibt keine Zugriffsverletzung. ParamStr(x) gibt einen Leerstring zurück, wenn es diesen Parameter nicht gibt.

Perlsau 17. Apr 2012 09:41

AW: Startparameter (Ordner angeben + Dateiname)
 
Du fragst einfach ab, wieviele Parameter beim Programmstart übergeben wurden. Wenn ParamCount = 1 dann wurde kein Parameter übergeben, denn ParamStr(0) wird defaultmäßig erzeugt.

Back2Code 17. Apr 2012 09:42

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von himitsu (Beitrag 1162230)
Zitat:

Zitat von Robin2k (Beitrag 1162229)
WriteLn(ParamStr(0)); = Ausgabe des Pfades in der sich das Programm befindet

Delphi-Quellcode:
WriteLn(ParamStr(0)); // Dateiname und Pfad der Anwendung
WriteLn(ExtractFilePath(ParamStr(0))); // Pfad der Anwendung (mit Backslash am Ende)
WriteLn(ExtractFileDir(ParamStr(0))); // Verzeichnis der Anwendung (ohne)
Ansonsten ... jupp, stimmt.


Man muß nur Bedenken, daß die Längenangabe wie bei einem String ist.
> die 0 ignorieren wir einfach (ist ja auch kein Parameter)
> und dann von 1 bis ParamCount

Und es gibt keine Zugriffsverletzung. ParamStr(x) gibt einen Leerstring zurück, wenn es diesen Parameter nicht gibt.

Super. Gibts jetzt eine Möglichkeit nicht den des Pfad des Programmes anzugeben sondern ein Custompfad als Beispiel c:\test\ ?

Perlsau 17. Apr 2012 09:46

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von Robin2k (Beitrag 1162233)
Super. Gibts jetzt eine Möglichkeit nicht den des Pfad des Programmes anzugeben sondern ein Custompfad als Beispiel c:\test\ ?

Den Pfad des Programmes mußt du nicht angeben, Paramstr(0) ist immer die Exe-Datei nebst Pfad, alle weiteren Parameter bleiben deiner Phantasie überlassen.

Klaus01 17. Apr 2012 09:47

AW: Startparameter (Ordner angeben + Dateiname)
 
noch eine Anmerkung
ich würde den Parametern Namen geben dann bist Du nicht an der Aufrufreihenfolge gebunden:
Für test.exe -C:\test\ -test.jpg

So: test.exe -folderName C:\test\ -fileName test.jpg

Wenn Du dann die Paramterliste durchläufst
z.B. bei i = 1
Dann steht z.B. im ParamStr(i) -folderName
und im Paramstr(i+1) (dem nachfolgen von ParamStr(i)) der Name des Verzeichnisses.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Seite 1 von 2  1 2      

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