Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi #32 mit FileStream in Datei schreiben klappt nicht (https://www.delphipraxis.net/26997-32-mit-filestream-datei-schreiben-klappt-nicht.html)

Nalincah 2. Aug 2004 15:38


#32 mit FileStream in Datei schreiben klappt nicht
 
Warum geht das nicht?

Delphi-Quellcode:
ft := TFileStream.Create(FileName,fmCreate);
try
  with ft do
  begin
    Write(#32,3);
  end;
finally
  ft.free;
end;
Der sagt immer:
Zitat:

[Fehler] uFrmMain.pas(64): Variable erforderlich

Luckie 2. Aug 2004 15:43

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
Dann gib doch eine Variable an:
Delphi-Quellcode:
var
  ch: Char;
begin
  ch := #32;
  ...;
  ...;

MathiasSimmack 2. Aug 2004 15:44

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
Lass mal das with spaßeshalber weg:
Delphi-Quellcode:
ft.Write(#32,3);
Da laut Hilfe ja eine Konstante erlaubt ist, könnte es sein, dass sich hier das "Write" vom File-Stream und der gleichnamige Delphi-Befehl "Write" (den man bspw. zum Schreiben in typisierte Dateien nutzt:
Delphi-Quellcode:
AssignFile(f,'Datei.txt');
Write(f,'Hallo');

{ ... }
) in die Quere kommen. ;) Ist aber nur eine Vermutung.

Nalincah 2. Aug 2004 15:50

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
Zitat:

Zitat von MathiasSimmack
Lass mal das with spaßeshalber weg:
Delphi-Quellcode:
ft.Write(#32,3);
Da laut Hilfe ja eine Konstante erlaubt ist, könnte es sein, dass sich hier das "Write" vom File-Stream und der gleichnamige Delphi-Befehl "Write" (den man bspw. zum Schreiben in typisierte Dateien nutzt:
Delphi-Quellcode:
AssignFile(f,'Datei.txt');
Write(f,'Hallo');

{ ... }
) in die Quere kommen. ;) Ist aber nur eine Vermutung.

Gleicher Fehler.
Ich versuche es momentan so:

Delphi-Quellcode:
var
  s : string;
begin
  // Datei erstellen und öffnen
  FileName := Edit1.Text + '\EV01';
  ft := TFileStream.Create(FileName,fmCreate);
  try
      ft.Write('001',3);
      FillChar(s[1],3,#32); // <-- Hier krieg ich ne Schutzverletzung!! Warum??
      ft.Write(s[1],3);
      ft.Write('1234567',7);
      ft.Write('HansMeiser',9);
      ft.Write(s[1],1);
      ft.Write('00001',5);
      ft.Write('00001',5);
      FillChar(s[1],95,#32);
      ft.Write(s[1],95);
  finally
    ft.Free;
  end;
end;

sakura 2. Aug 2004 15:52

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
Erst einmal zum ersten Teil. Ein Char ist nicht 3 Bytes, sondern nur 1 Byte groß...
Code:
var
Ch: Char;
....
ft := TFileStream.Create(FileName,fmCreate);
try
  Ch := #32;
  with ft do
  begin
    Write(Ch,[color=#ff0009]1[/color]);
  end;
finally
  ft.free;
end;
...:cat:...

nailor 2. Aug 2004 15:53

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
probier mal das von luckie, sollte klappen.

schutzverletzung: weil dein string noch nicht so lang ist, wie du fillen willst.

sakura 2. Aug 2004 15:53

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
Zitat:

Zitat von General2004
FillChar(s[1],3,#32); // <-- Hier krieg ich ne Schutzverletzung!!

S ist nicht initialisiert. Nutze doch einfach mal Hier im Forum suchenStringOfChar

...:cat:...

Nalincah 2. Aug 2004 15:54

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
@Luckie: Will #32 aber 3x reinschreiben

so klappt es

Delphi-Quellcode:
  SetLength(s,1);
  FillChar(s[1],3,#32);

Nalincah 2. Aug 2004 16:03

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
Zitat:

Zitat von sakura
Zitat:

Zitat von General2004
FillChar(s[1],3,#32); // <-- Hier krieg ich ne Schutzverletzung!!

S ist nicht initialisiert. Nutze doch einfach mal Hier im Forum suchenStringOfChar

...:cat:...

Klappt wunderbar
DANKE!!

Delphi-Quellcode:
  s := stringofchar(#32,3);
  ft.Write(s[1],3);

sakura 2. Aug 2004 16:04

Re: #32 mit FileStream in Datei schreiben klappt nicht
 
Und jetzt noch:
Delphi-Quellcode:
  s := stringofchar(#32,3);
  ft.Write(s[1],Length(s));
Dann ist es einigermaßen sicher ;)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz