Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

Re: StreamWrite erzeugt nur 0 Byte-File

  Alt 5. Jun 2008, 09:30
Hallo little Budda,

Ich habe Deinen Code einmal ausprobiert und leicht geändert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var aFileBuffer : array of byte;
    iFileLength, ix, iByteCounter : integer;
    datei : tfilestream;
    bStreamOk : boolean;
    s_filename, startpfad : string;
begin
  [b]iFileLength := 123; // Aktueller Wert: '20980826'[/b]
  // Array erzeugen
  setLength(aFileBuffer, iFileLength);

  for ix := 0 to (iFileLength - 1)
    do aFileBuffer[ix] := 55;

  // Startpfad ermitteln
  getdir(0, startpfad); // Startpfad einlesen
  if (startpfad[length(startpfad)] <> '\')
    then startpfad := startpfad + '\'; // Pfad ggf. korrigieren

  // Dateiname zuweisen
 [b] s_filename := 'c:\temp\test.bin'; // Aktueller Wert: 'data.bin'[/b]
  bStreamOk := true;
  try
    datei := Tfilestream.create(s_filename, fmcreate or fmShareExclusive);
  except
    bStreamOk := false;
  end;

  if (bStreamOk = true) then
    begin
      // Schreiben der DateiInhalte in den Stream
      try
        iByteCounter := datei.Write(aFileBuffer, iFileLength);
      finally
        datei.free;
      end;
      // Prüfen ob die korrekte Anzahl Bytes geschrieben wurde
      if (iByteCounter <> iFileLength)
        then showmessage('Stream wurde erzeugt, hat aber die falsche Größe.')
        else showmessage('Stream wurde erzeugt.');
    end
  else
    begin
      showmessage('Stream konnte nicht erzeugt werden.');
    end;
end;
und siehe da es wird eine 123Byte große Datei erzeugt.
Schau Dir im Debugger die Übergabe der Dateigröße einmal an.

Gruß
K-H
  Mit Zitat antworten Zitat