Autor Beitrag
binco
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mo 13.06.05 21:14 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 346



BeitragVerfasst: 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

_________________
49 63 68 68 61 62 65 6B 65 69 6E 65 41 68 6E 75 6E 67 21
binco Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mi 15.06.05 09:35 
Titel: Hier der Quelltext
ausblenden volle Höhe 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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: 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