Entwickler-Ecke

Dateizugriff - Textdatei nicht zu finden - im Programm aber verwendbar (?)


Pow - So 06.06.10 20:10
Titel: Textdatei nicht zu finden - im Programm aber verwendbar (?)
Hallo,

ich habe folgende Situation: (falls von Interesse, ich arbeite mit Borland Delphi 7)
Ich möchte etwas in eine Textdatei schreiben, das ich an anderen Stellen wieder auslesen möchte.
Dazu erstelle ich also auf C: die Textdatei.
Seltsamerweise sehe ich sie im Ordner nicht, im Programm kann es jedoch verwendet werden - wie kann das sein?

folgender Quellcode:
Zum schreiben

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TF_Konfig.Button2Click(Sender: TObject);

var       Druckername : TextFile;
          TempS: String;

begin
  ...
  AssignFile(Druckername, 'C:\Druckername.txt');
  Rewrite(Druckername);
  write(Druckername, TempS);
  CloseFile(Druckername);
  ...
end;


Zum auslesen

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  ..
  var TFDruckername : TextFile;
  ...
  AssignFile(TFDruckername, 'C:\Druckername.txt');
  FileMode := fmOpenRead;
  Reset(TFDruckername);
  readln(TFDruckername, TempS1);
  PDruckername := PChar(TempS1);
  CloseFile(TFDruckername);
  ...


Dem ersten Quellcode zufolge müsste man die Textdatei doch im Ordner vorfinden können oder?

Ach ja und wenn es diese Textdatei nicht gibt, möchte ich eine Aufforderung ausgeben:

Delphi-Quelltext
1:
2:
3:
if not FileExists('C:\Druckername.txt'then
     F_Konfig.ShowModal;
     ShowMessage('Bitte Drucker auswählen!');


Diese Fehlermeldung erscheint dann jedes Mal, obwohl das Programm irgendwo Druckername aus einer Textdatei auslesen kann.

Wie kommts also, dass ich die Datei nicht finde? :s


jaenicke - So 06.06.10 20:15

Unter c:\ direkt hast du keine Schreibrechte, dementsprechend käme bei Windows 2000 und XP ein Fehler in deinem Delphiprogramm, bei Windows Vista und 7 wird die Datei in den VirtualStore in den Anwendungsdaten umgeleitet:

Quelltext
1:
C:\Users\[User]\AppData\Local\VirtualStore                    


Denn genau in die Anwendungsdaten gehören solche Dateien eben (oder in das Tempverzeichnis).


Pow - So 06.06.10 20:42

Ach soo.. gut zu wissen - programmieren tu ich nämlich auf Win7 und das Programm selbst sollte auf XP lauffähig sein.

Wenn ich jetzt aber das Laufwerk auf z.B. N: wechsel, gibt er mir eine Fehlermeldung, mit der ich leider nicht so viel anfangen kann.. und egal welche andere Festplatte ich angebe, der gleiche Fehler immer
Hat das etwas mit Schreibrechten zutun?


jaenicke - So 06.06.10 20:55

Was bringt es irgendein Laufwerk anzugeben, benutze die Anwendungsdaten, dann hast du auch keine Probleme... :roll:
http://www.delphi-library.de/viewtopic.php?p=548600

Mit dem Fehler hat das aber vermutlich nichts zu tun. Da hast du eher ein Objekt nicht erzeugt oder so.


Pow - So 06.06.10 22:05

Danke für den Hinweis :)