Entwickler-Ecke

Sonstiges (Delphi) - Relative Pfade-Verständnisfrage


Boldar - Sa 27.12.08 20:46
Titel: Relative Pfade-Verständnisfrage
Hallo,
ist das hier

Delphi-Quelltext
1:
assignfile (f, 'test.irgendwas');                    


Das Gleiche wie

Delphi-Quelltext
1:
2:
3:
4:
var s: string
begin
getdir (0, s);
assignfile (f, s+test.irgendwas);


????
Weil bei mir machte es sehr wohl einen Unterschied, aber ich dachte immer es wäre äquivalent??


jaenicke - Sa 27.12.08 20:50

Meine Standardantwort zu dem Thema ist erstmal dies:
http://www.delphi-library.de/viewtopic.php?p=499701
Warum du ohne Pfadangabe Probleme bekommst und es eben nicht das selbe ist, siehst du auch in der Demo. Wo nämlich genau ein Problem auftritt ohne dass etwas besonderes gemacht wird.


Boldar - Sa 27.12.08 20:52

Aber der Getdir-aufruf ermittelt doch auch das arbeitsverzeichnis :gruebel:


Delete - Sa 27.12.08 20:54

Du meinst eher GetCurrentDir, oder? Wobei ich auch nicht schlau daraus werde, was bei Übergabe von 0 an GetDir "Vorgabe" bedeuten soll.


jaenicke - Sa 27.12.08 20:56

Schau dir mal in Ruhe an was GetDir macht: :gruebel:
http://www.delphibasics.co.uk/RTL.asp?Name=GetDir
Zitat:
Get the default directory (drive plus path) for a specified drive

Und deshalb ist es eben nicht das selbe wie wenn du im Arbeitsverzeichnis unterwegs bist. ;-)

// EDIT:
Du meinst das was user profile iconDeddyH meinte:
http://www.delphibasics.co.uk/RTL.asp?Name=GetCurrentDir

Und dann ist es in der Tat das selbe.


Boldar - So 28.12.08 13:03

mmh also ich hab das da [http://www.delphi-treff.de/tipps/dateienverzeichnisse/wiki/Das%20aktuelle%20Arbeitsverzeichnis%20ermitteln/] her, und die Seite machte bisher einen ganz seriösen Eindruck auf mich... :gruebel:


SmileySN - So 28.12.08 14:03

Das ist soweit auch richtig, solange sich das Default-Laufwerk (0) nicht ändert.
GetDir (DefaultLaufwerk, Pfadname) Wenn 0 im Aufruf von GetDir benutzt wird.


jaenicke - So 28.12.08 14:07

Die 0 benutzt ja das "default drive", das heißt du bekommst so insgesamt das "default directory" auf dem "default drive".
Wie das genau gemeint ist, weiß ich nicht. :nixweiss:
Es kann schon sein, dass damit gemeint ist, dass das das Arbeitsverzeichnis zurückgibt, in der Delphi Hilfe steht auch current directory statt default.
Und im Test eben war der Rückgabewert auch gleich dem von GetCurrentDir.

Und die Datei wird so mal gefunden und mal nicht? Bist du sicher, dass das daran liegt und nicht daran, dass sich das Arbeitsverzeichnis geändert hat?

Warum willst du eigentlich nicht auf ein bestimmtes Verzeichnis zugreifen, sondern auf das Arbeitsverzeichnis, das sich ja jederzeit ändern kann? :gruebel:
Du weißt ja nicht wohin das Arbeitsverzeichnis zeigt, es sei denn du setzt es vorher, und dann kannst du genauso gut auch gleich dieses Verzeichnis direkt benutzen.


Boldar - So 28.12.08 15:56

naja, ich habe das progg 2x mit meinen g-Tasten (Makrotasten) auf der Tastatur verknüpft. Nun habe ich im Treiber jeweils ein unterschiedliches Arbeitsverzeichnis gewählt, sodass das Progg dann eine andere ini benutzt und somit auch was anderes macht...
:) :lol: 8)

[Sind die paar Smileys noch erlaubt, Kha??]


jaenicke - So 28.12.08 16:00

Kannst du nicht einfach Parameter an das Programm übergeben? (Die sich mir ParamStr ja leicht auslesen lassen.) :gruebel:


Boldar - So 28.12.08 16:01

also die Einstellung in der Hardware is als erknüpfung ausgelegt... Wie fügt man denn Bei Verknüpfungen Parameter hinzu?? :nixweiss: :oops: :oops: :nixweiss:


Delete - So 28.12.08 16:03

Eigenschaften der Verknüpfung öffnen und die Parameter unter "Ziel" dahinterschreiben.

Quelltext
1:
Pfad\Programm.exe /parameter                    


jaenicke - So 28.12.08 16:03

Du kannst den Parameter ja in der Verknüpfung angeben. :idea:

In den Eigenschaften der Verknüpfung:
Unter Ziel z.B.:

Quelltext
1:
"c:\...\xy.exe" Param1                    
ParamStr(1) enthält dann in Delphi den String Param1.


Boldar - So 28.12.08 16:04

muss man da Param1 inna verknüpfung nich in anführungszeichen setzen? und wie stehts mit Leerzeichen in Parametern??


jaenicke - So 28.12.08 16:05

Wenn der Parameter Leerzeichen enthält, muss er in Anführungszeichen, da sonst die einzelnen Teile als einzelne Parameter ankommen.


Boldar - So 28.12.08 16:06

mmh dann mach ichs so...