![]() |
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:
dann wird die test.ini im folgenden pfad gespeichert:
ini:=TIniFile.Create('test.ini');
Code:
...
c:\windows\system32\test.ini
wenn man den befehl
Delphi-Quellcode:
benutzt, dann wird die ini file im hauptverzeichniss
ini:=TIniFile.Create('\test.ini');
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:
und die ini soll im gleichen verzeichniss abgelegt werden... also:
C:\blabla\Project1\test.exe
Code:
ich könnte ja schreiben:
C:\blabla\Project1\test.ini
Delphi-Quellcode:
aber dann wird die ini immer dort
ini:=TIniFile.Create('C:\blabla\Project1\test.ini');
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.... |
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.
|
Re: brauche dringend hilfe... pfad usw
Hallo wolfzone,
herzlich willkommen in der Delphi-PRAXiS. Nimm das und die Online-Hilfe:
Delphi-Quellcode:
Grüße vom marabu
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
|
Re: brauche dringend hilfe... pfad usw
Hi,
um eine Datei im Programmverzeichnis zu benutzen, ermittle einfach den Pfad Deiner Anwendung:
Delphi-Quellcode:
Für die restlichen Fragen wären einzelne Threads pro Frage angebracht ;)
FileName := ExtractFilePath(ParamStr(0)) + 'Dateiname.xyz';
Gruß Stephan :dance: edit: Ups, da hab ich wohl wiedermal nen roten Kasten übersehen :oops: |
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. |
Re: brauche dringend hilfe... pfad usw
THX leutz, hat mir sehr geholfen....
aber eine frage hätt ich noch:
Delphi-Quellcode:
was bedeutet die "0" in klammern hinter ParamStr?
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
Mfg WolF |
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: |
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.
|
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: |
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 |
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 |
Re: brauche dringend hilfe... pfad usw
Da aber z.B. ein OpenDialog den Verzeichnispfad ändern kann, sollte man generell auf relative Pfade verzichten.
|
Re: brauche dringend hilfe... pfad usw
oder man weiß was man tut
absolute pfade sind nämlich noch übler (zumindest wenn sie hardcodiert werden) |
Re: brauche dringend hilfe... pfad usw
und gleich noch ne frage zu diesem thema....
Delphi-Quellcode:
die beide hab ich ausprobiert, das funtzt aber nicht... delphi zeigt beim compilieren immer einen fehler an und zwar Incopatible Types: 'String' and 'TAnsiChar'
shellexecute(0,'open', ExtractFilePath(ParamStr(0)) + 'test.ini', '', '', 1);
OpenFile(ExtractFilePath(ParamStr(0)) + 'test.ini'); 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:
THX im vorraus
...
var VARTEST : string; begin shellexecute(0,'open', ExtractFilePath(ParamStr(0)) + VARTEST, '', '', 1); // so hab ichs ausprobiert, klappt aber net... end; Mfg WolF |
Re: brauche dringend hilfe... pfad usw
shellexecute(0, 'open', pchar(ExtractFilePath(ParamStr(0)) + 'foobar.ini'), nil, nil, sw_shownormal);
|
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? |
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 -
|
Re: brauche dringend hilfe... pfad usw
könnteste bitte vielleicht auch die benutzten befehle erläutern?
zB das pchar und das nil.... THX |
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