Entwickler-Ecke
Dateizugriff - Dateiname als String in Typisierter Datei speichern
binco - Mo 13.06.05 21:14
Titel: Dateiname als String in Typisierter Datei speichern
Ich habe mir ein record geschrieben, wo 2 Dateinamen als Strings[255] enthalten sind...
Die Dateinamen werden über einen opendialog in das Record geschrieben. Dannach wird das komplette record in eine typisierte Datei gespeichert.
Das Problem is, dass alles ausser den Dateinamen gespeichert wird. Einzige Ausnahme: Wenn die Datei im selben Ordner liegt wie das Projekt...
Ich hoffe irgendjemand kann mir helfen
b1nc0
Narses - Mo 13.06.05 21:23
Moin und :welcome: im Forum!
Leider ist deine Fehlerbeschreibung ausreichend seltsam, dass wir wohl schon deinen Code sehen müssen, um was dazu sagen zu können. :wink:
cu
Narses
Muetze1 - Mo 13.06.05 22:12
Moin!
Mit anderen Worten: die Pfadangaben sind länger als 255 Zeichen? Naja, ich sehe da 2 Lösungen:
1. Du speicherst nur den Dateinamen ohne Pfad (Stichwort: ExtractFileName())
2. Du steigst von typirisierten Dateien um zu einem TFileStream und speicherst darin keine ShortStrings sondern echte Strings in ihrer wahren Länge (also bis 2GB Länge).
MfG
Muetze1
binco - Mi 15.06.05 09:35
Titel: Hier der Quelltext
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var f:textfile; a:string[255]; begin if opendialog1.execute then begin a:=opendialog1.filename; assignfile(f,'config.cfg'); rewrite(f); write(f,a); closefile(f); end; end;
end. |
Hier hab ich einen kurzen Quelltext zusammengestellt.
Wenn die zu speichernde Datei im selben Verzeichnis liegt funzt alles einwandfrei, sonst speichert er nichts. Wenn ich den Dateinamen von Hand in ein Edit eingebe und speicher funzt auch alles.
Ich hoffe irgendjemand kennt dieses Problem...
Martin1966 - Mi 15.06.05 10:08
hallo!
ich hab deinen geposteten Code ausprobiert und es funktioniert. was du aber machen solltest: gib das Verzeichnis an wo die config.cfg gespeichert werden soll. ich hatte zum testen einfach c:\config.cfg benutzt. in deinem fall soll die config.cfg wahrscheinlich in deinem programmverzeichnis liegen, oder? wenn ja dann hole dir das programmverzeichnis mit paramstr(0) und extractfilepath und packe dieses verzeichnis vor dem config.cfg.
lg martin
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!