Delphi-PRAXiS

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

Back2Code 17. Apr 2012 09:50

AW: Startparameter (Ordner angeben + Dateiname)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ah langsam hab ichs raus.

So habs jetzt geschafft meinen ersten Parameter auszugeben. Wie kann ich jetzt diesen 1 Paramter wirklich diesen Ordner zuteilen. Zurzeit ist es ja nur ein String.

DeddyH 17. Apr 2012 09:59

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von Robin2k (Beitrag 1162237)
Wie kann ich jetzt diesen 1 Paramter wirklich diesen Ordner zuteilen.

Was meinst Du damit?

Perlsau 17. Apr 2012 09:59

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von Robin2k (Beitrag 1162237)
Wie kann ich jetzt diesen 1 Paramter wirklich diesen Ordner zuteilen. Zurzeit ist es ja nur ein String.

Meintest du, wie du in den Ordner wechseln kannst, den du als Parameter übergeben hast? Ich würde sagen, das macht SysUtils.SetCurrentDir für dich ...

himitsu 17. Apr 2012 10:00

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von Perlsau (Beitrag 1162232)
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.

Psst: ParamStr(0) wird nicht mitgezählt. :wink:

Back2Code 17. Apr 2012 10:00

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von DeddyH (Beitrag 1162239)
Zitat:

Zitat von Robin2k (Beitrag 1162237)
Wie kann ich jetzt diesen 1 Paramter wirklich diesen Ordner zuteilen.

Was meinst Du damit?

Ich habe jetzt einen String (vom Pfad den man als Paramater angibt) und ich möchte jetzt diesen String jetzt benutzn um in diesem Verzeichnis dann eine Aktion zu machen. Eine Suche nach Dateien.

Perlsau 17. Apr 2012 10:03

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von himitsu (Beitrag 1162241)
Psst: ParamStr(0) wird nicht mitgezählt. :wink:

Echt jetzt? Das hätte ich nicht gedacht! Also ist ParamCount gleich 0, wenn kein Parameter angegeben wurde. Man lernt doch nie aus, obwohl ich bislang keine Parameter benötigt habe.

Perlsau 17. Apr 2012 10:04

AW: Startparameter (Ordner angeben + Dateiname)
 
Zitat:

Zitat von Robin2k (Beitrag 1162242)
Ich habe jetzt einen String (vom Pfad den man als Paramater angibt) und ich möchte jetzt diesen String jetzt benutzn um in diesem Verzeichnis dann eine Aktion zu machen. Eine Suche nach Dateien.

Und wo liegt das Problem?

DeddyH 17. Apr 2012 10:06

AW: Startparameter (Ordner angeben + Dateiname)
 
Delphi-Quellcode:
Pfad := ParamStr(1);
if DirectoryExists(Pfad) then
  SucheNachDateien(Pfad);
Das ist doch keine Hexerei.


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