Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi brauche dringend hilfe... pfad usw (https://www.delphipraxis.net/50238-brauche-dringend-hilfe-pfad-usw.html)

wolfzone 22. Jul 2005 12:21


brauche dringend hilfe... pfad usw
 
hallo, ich habe vor kurzem angefangen mit delphi zu programmieren...
habe schon mit ini files etwas erfahrung und mit timern und so weiter....
und habe aber noch paar fragen.... wenn man mit diesem befehl ne ini file ertellt oder lädt:
Delphi-Quellcode:
ini:=TIniFile.Create('test.ini');
dann wird die test.ini im folgenden pfad gespeichert:
Code:
c:\windows\system32\test.ini
...
wenn man den befehl
Delphi-Quellcode:
ini:=TIniFile.Create('\test.ini');
benutzt, dann wird die ini file im hauptverzeichniss
der partition gespeichert, auf welcher sich auch das projekt besser gesagt die ausführbare datei befindet... also die exe...

und nun meine frage... meine EXE liegt zb
Code:
C:\blabla\Project1\test.exe
und die ini soll im gleichen verzeichniss abgelegt werden... also:
Code:
C:\blabla\Project1\test.ini
ich könnte ja schreiben:
Delphi-Quellcode:
ini:=TIniFile.Create('C:\blabla\Project1\test.ini');
aber dann wird die ini immer dort
gespeichert auch wenn ich die exe verschiebe.... also mein prob ist, die exe soll nich in einem genauen verzeichniss suchen, sondern
immer auf die ini zugreifen die im gleichen oder unterordner liegt.... was muss ich dann als pfad eingeben?

so was ich auch noch gerne wissen würde:
1. gesammt vorhandener ramspeicher und der freie ramspeicher, der noch zur verfügung steht in ein label schreiben lassen???
2. kann ich nach cd roms suchen lassen?
3. ich weiß ja wie ich dat mache, dass wenn ich auf ein button mit der rechten maus taste raufklicke
dass sich dann ein popup menu öffnet... wie mach ich dass es mit der linken maustaste passiert?

THX im vorraus....

Luckie 22. Jul 2005 12:25

Re: brauche dringend hilfe... pfad usw
 
ParamStr(0) liefert dir deinen Anwendungspfad, ExtractFilepath liefert dir dann den Pfad ohne Dateiname. Und für die anderen Frage mach bitte jeweils einen neune Thread auf, bzw. benutz erstmal die Suche. Die Suche hätte dir übrigens auch hier schon geholfen.

marabu 22. Jul 2005 12:26

Re: brauche dringend hilfe... pfad usw
 
Hallo wolfzone,

herzlich willkommen in der Delphi-PRAXiS.

Nimm das und die Online-Hilfe:

Delphi-Quellcode:
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
Grüße vom marabu

Steve 22. Jul 2005 12:27

Re: brauche dringend hilfe... pfad usw
 
Hi,

um eine Datei im Programmverzeichnis zu benutzen, ermittle einfach den Pfad Deiner Anwendung:
Delphi-Quellcode:
FileName := ExtractFilePath(ParamStr(0)) + 'Dateiname.xyz';
Für die restlichen Fragen wären einzelne Threads pro Frage angebracht ;)

Gruß
Stephan :dance:

edit: Ups, da hab ich wohl wiedermal nen roten Kasten übersehen :oops:

Palando 22. Jul 2005 12:30

Re: brauche dringend hilfe... pfad usw
 
Hi wolfzone :)

Zu deiner Ini-Frage:

(Rauseditiert, das oben schon steht. Ich bin einfach zu langsam. :x)


Zur 4. (3.) Frage:
Vielleicht einfach dem OnClick-Event das Popup-Menü zuweisen? Geht das?



Ansonsten: Benutz die Suchfunktion, ich bin sicher, dass die Ramfrage schonmal beantwortet wurde, wenns nicht vielleicht sogar in der Codelib steht.

wolfzone 22. Jul 2005 15:14

Re: brauche dringend hilfe... pfad usw
 
THX leutz, hat mir sehr geholfen....
aber eine frage hätt ich noch:
Delphi-Quellcode:
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
was bedeutet die "0" in klammern hinter ParamStr?

Mfg WolF

Steve 22. Jul 2005 15:15

Re: brauche dringend hilfe... pfad usw
 
Hi,

:roll: [F1] :arrow: ParamStr(0) gibt den Pfad und den Dateinamen des ausgeführten Programms zurück (z.B. C:\TEST\MYPROG.EXE).

Was die Online-Hilfe nicht alles weiß :shock: :mrgreen:

Gruß
Stephan :dance:

Matze 22. Jul 2005 15:19

Re: brauche dringend hilfe... pfad usw
 
Das sagte Luckie ja bereits, nur wieso gerade eine Null, ich denke, das möchte er wissen. Das steht in der OH nämlich nicht.

Steve 22. Jul 2005 15:27

Re: brauche dringend hilfe... pfad usw
 
Die Zahl in Klammern ist der Index des Parameters.
0 deshalb, weil der Anwendungsname der erste "Aufrufparameter" ist, um das Programm zu starten.
Das was danach kommt, z.B. wenn ein Dateiname ans Programm übergeben wird oder Schalter benutzt werden, folgen dann mit Index 1 bis n.
Öhm :gruebel: genauer kann ich nich erklären :stupid:

Gruß und schönes WE zusammen :mrgreen:
Stephan :dance:

barf00s 22. Jul 2005 15:28

Re: brauche dringend hilfe... pfad usw
 
der parameter von ParamStr() gibt an welcher teil des kompletten pfades zurückgegeben werden soll

der pfad besteht aus "programmname.exe param1 param2 param3"
der ERSTE teil (index 0) ist der programmname

deshalb bekommst bei ParamStr(0) den program namen zurück

falls dich das verwirrt ParamStr(0) zu verwenden, kannst auch

uses Forms;

Application.ExeName verwenden

Panthrax 22. Jul 2005 15:31

Re: brauche dringend hilfe... pfad usw
 
Salut.

Ähm... Bei Wolfzone weiß ich es nicht. Vielleicht bist Du alt genug, vielleicht aber auch nicht.

An alle anderen: Schonmal was von den Verzeichnissen '.' und '..' gehört? Noch nie begegnet?

Zur Erklärung:

'.' repräsentiert das aktuelle Verzeichnis.
'..' repräsentiert das jeweils darüberliegene/übergeordnete Verzeichnis.

Du kannst also mit '.\'+DateiBzwPfadname vom aktuellen Verzeichnis ausgehend Dich durch die Verzeichnisstruktur hangeln.

Beispiele:

'.\Program.ini' Datei 'Program.ini' im aktuellen Verzeichnis
'.\.\.\.\Program.ini' ebenfalls die Datei 'Program.ini' im aktuellen Verzeichnis
'.\Unterverzeichnis\..\Program.ini' und noch einmal
'..\Program.ini' Datei 'Program.ini' im übergeordneten Verzeichnis
'.\..\Program.ini' ebenfalls die Datei 'Program.ini' im übergeordneten Verzeichnis
'..\.\Program.ini' und noch einmal

Hinweis:

Bei dieser Art der Pfadangaben ist es wichtig zu wissen, welcher der gerade aktuelle Pfad ist. Du kann ihn auch setzten und damit das Ausgangsverzeichnis für diese relativen Pfadangaben ändern.

Zu Beginn Deines Programms ist es üblicherweise der Verzeichnispfad zu Deinem Programm.

Natürlich gibt es reichlich Routinen die Dich dabei unterstützen Informationen über Pfade und Dateien zu sammeln und zu verwenden. (Siehe bisherige Beispiele.)

MfG
Panthrax

Matze 22. Jul 2005 15:34

Re: brauche dringend hilfe... pfad usw
 
Da aber z.B. ein OpenDialog den Verzeichnispfad ändern kann, sollte man generell auf relative Pfade verzichten.

barf00s 22. Jul 2005 15:37

Re: brauche dringend hilfe... pfad usw
 
oder man weiß was man tut
absolute pfade sind nämlich noch übler (zumindest wenn sie hardcodiert werden)

wolfzone 22. Jul 2005 15:47

Re: brauche dringend hilfe... pfad usw
 
und gleich noch ne frage zu diesem thema....

Delphi-Quellcode:
shellexecute(0,'open', ExtractFilePath(ParamStr(0)) + 'test.ini', '', '', 1);
OpenFile(ExtractFilePath(ParamStr(0)) + 'test.ini');
die beide hab ich ausprobiert, das funtzt aber nicht... delphi zeigt beim compilieren immer einen fehler an und zwar Incopatible Types: 'String' and 'TAnsiChar'

wie muss ich das eintragen, damit das funtzt...

und wie muss ich den code schreiben, wenn ich aus einer ini file n pfad auslese und ihn den der variable test zuordne... so mein ich dat:
Delphi-Quellcode:
...
 var VARTEST : string;
begin
shellexecute(0,'open', ExtractFilePath(ParamStr(0)) + VARTEST, '', '', 1); // so hab ichs ausprobiert, klappt aber net...
end;
THX im vorraus

Mfg WolF

barf00s 22. Jul 2005 15:49

Re: brauche dringend hilfe... pfad usw
 
shellexecute(0, 'open', pchar(ExtractFilePath(ParamStr(0)) + 'foobar.ini'), nil, nil, sw_shownormal);

Sharky 22. Jul 2005 15:51

Re: brauche dringend hilfe... pfad usw
 
Hai barf00s,

eine Zeile Code ist sicher nicht falsch... aber eine kleine Erklärung dazu ist sicher noch besser?

barf00s 22. Jul 2005 15:53

Re: brauche dringend hilfe... pfad usw
 
ich bin nur (mal wieder) davon ausgegangen das er die suche bemüht zum thema "shellexecute" von daher wäre jede weitere erklärung doppelt gemoppelt -

wolfzone 22. Jul 2005 15:54

Re: brauche dringend hilfe... pfad usw
 
könnteste bitte vielleicht auch die benutzten befehle erläutern?
zB das pchar und das nil....

THX

Luckie 22. Jul 2005 16:14

Re: brauche dringend hilfe... pfad usw
 
Wie viele Themen besprechen wir denn jetzt in diesem Thread? Ich habe doch gesagt, dass für jede Farge ein separater Thread aufgemacht werden soll, sonst findet man hier nichts wieder. Da zu Shellexecute die Suche genügend Treffer ergibt, schließe ich hier.
Geschlossen


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz