Entwickler-Ecke

Dateizugriff - Probleme mit Pfadtiefe


read - Di 18.01.05 09:14
Titel: Probleme mit Pfadtiefe
Hallo zusammen!

ich hab mal kurze 'ne Frage zur Pfadtiefe. Und zwar hab ich mir 'ne Delphi 2 Developer Version geholt. Bei dem Versuch ein Verzeichnis zu erstellen, bzw. beim schreiben einer Datei hab ich jetzt aber das Problem, daß ich das ganze nicht in Unterverzeichnisse bekomme.
Wenn ich direkt auf c: ein Verzeichnis erstellen will - kein Problem, wenn ich 'ne Datei erstellen will(direkt auf c:) kein problem.....aber sage ich erstelle ein Verzeichnis/Datei in c:\test\neu(Beispiel) bekomme ich eine fehlermeldung "Kann Verzeichnis/Datei c:\test\neu\bsp.txt nicht erstellen"

kennt jemand das Problem und hat vielleicht 'ne Lösung wie man das umgehen kann

gruß

marco


Heiko - Di 18.01.05 09:18

Wenn es den Unterordner nicht gibt, musst du den Ordner vom Programm aus erstellen.


jasocul - Di 18.01.05 09:19

Dazu zwei Fragen:
1. Bist du ganz sicher, dass das Verzeichnis existiert, in dem du die Datei erstellen willst (auf Tippfehler prüfen)?
2. Kannst du den Source zeigen, wo du die Datei erstellst?

Das Erstellen von Dateien ging schon in Turbo-Pascal problemlos. Es kann also nicht an der Delphi-Version liegen.


read - Di 18.01.05 09:50

Guten Morgen zusammen

hier mal kurz der Code dazu


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm2.Button2Click(Sender: TObject);
var
 filepath : string;
begin
 filepath := extractfilepath(paramStr(0));
 listbox1.Items.SaveToFile(filepath + 'config.dat');
 form2.Close;
 form1.Show;
end;


ähnlich mach ich das mit dem Directory

if not DirectoryExists ...... then CreateDir ........

funktioniert unter Delphi 7 problemlos

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.


jasocul - Di 18.01.05 09:53

Mach doch mal ein ShowMessage mit filepath. Eventuell fehlt der "\" zwischen dem Pfad und der Datei.
EDIT: In der OH von D5 steht, dass extractfilepath den "\" mit angibt.


Heiko - Di 18.01.05 09:56

Unter D6 Prof funktioniert der Quelltext. Warum das bei dir nicht funktioniert kann ich dir nicht sagen.


read - Di 18.01.05 09:58

moment...hab grad 'n Bildschirmausdruck gemacht

werde es mal gleich hier posten - also es sind alle '\' vorhanden


Heiko - Di 18.01.05 09:59

@jasocul Das Zeichen "\" ist vorhanden (damit das Zeichen nicht mir rauskopiert wird, müsste er ExtractFileDir nehmen :wink: ).


read - Di 18.01.05 10:01

hallo heiko

das is ja das was ich auch net versteh . . . unter Delphi7 pers. funktioniert es ja auch ohne probleme
nur halt die zweier version - will net so wie ich :?


Heiko - Di 18.01.05 10:03

Die Anwendung gibt aber den richtigen Pfad zurück, oder?


jasocul - Di 18.01.05 10:08

Speicherst du lokal oder auf einem Server? Könnte es ein Rechte-Problem sein?
Wenn es das nicht ist, fällt mir so im Moment auch nichts mehr ein.


read - Di 18.01.05 10:20

hmm wollte grad das pic posten ... aber irgenwie ist der server zu zeit down :-(

naja, um auf eure fragen zurückzukommen...ja, er gibt den richtigen Pfad zurück
und ja, ich speichere auf eine server....aber auch lokal funktioniert es net
genauso, wie mir delphi2 ständig abschmiert, wenn ich den code vom server aus öffne ...wenn ich ihn vom lokalen laufwerk öffne läuft delphi ohne probleme - haare ausrauf -


Heiko - Di 18.01.05 10:30

Irgendiwe komisch das es lokal auch nicht funktioniert. Beim Netzwerk kann ich dir nicht helfen. Nimm mal ein neues Project, leg darauf einen Button und eine ListBox, füge in die ListBox, von der Entwicklungsumgebung aus, ein paar Strings ein und füge dann den Quelltext, den du gepostet hast, beim Button ein. Probier es danach aus. Wenn es beim neuen Porject auch nicht funktioniert, kann ich dir auch nicht helfen. Am besten schreibst du das Programm unter Delphi 7, da müsste es eigentlich funktionieren.

Warum nimmst du überhaupt Delphi 2 und nicht Delphi 7?


jasocul - Di 18.01.05 10:31

Ganz ruhig bleiben. Wir sind ja da :wink:
Probier das ganze jetzt nochmal lokal. Lass dir dabei die Pfad-Variable anzeigen. Es kann nämlich passieren, dass der Compiler das Programm als EXE auf dem Server ablegt. Dann hast du wieder den Server-Pfad.
Hast du eine Laufwerksverbindung mit dem Server oder Verbindung wie: "\\SERVERNAME\Pfad\"? Mist, habe jetzt doch glatt vergessen, wie man das nennt. :oops:
Ich meine, dass es in den frühen Delphi-Version mit solchen Angaben nicht funktioniert.


read - Di 18.01.05 10:41

okay hier das bild mit fehlermeldung

http://www.read-this.de/Pfad.bmp

erkennbar alle '\' sind da


read - Di 18.01.05 10:45

@ Heiko

delphi2 nehm ich, da das projekt für die Firma ist in der ich arbeite ... und die haben auch nur 'ne Delphi2 developer version ....die kommt mit den forms aus delphi7 net klar

@ peter

lokal das selbe problem....direkt auf c: kann ich datei und directory erstellen....geh ich weiter rein 'c:\test\neu' is ende im gelände
selbe fehlermeldung wie auf dem bild

gruß

marco


jasocul - Di 18.01.05 10:50

Dann kann ich dir nur ein WorkAround empfehlen mit ChDir. Das ist eine Delphi-Funktion, mit der du das aktuelle Verzeichnis wechseln kannst. Ich hoffe, dass es das schon in D2 gibt.


read - Di 18.01.05 11:02

hallo peter


chdir existiert - werde ich mal damit auseinandersetzen

gruß

marco


Heiko - Mi 19.01.05 11:55

Und funktionierts?
Wenn nicht versuch es doch mal mit TFileStream.


read - Mi 19.01.05 12:01

hallo Heiko

das Problem lag an einer Stelle, wo ich nur durch dummen Zufall draufgekommen bin

das System (Betriebssystem) hat beim anlegen der *.dat Datei die ganze schreibgeschützt..
naja und beim nächsten zugriff gab's halt den beschriebenen Fehler

sorry und nochmal vielen Dank an Euch

gruß

Marco