AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Textdatei byteweise in MemoryStream speichern - Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei byteweise in MemoryStream speichern - Problem

Ein Thema von dynamo · begonnen am 27. Dez 2012 · letzter Beitrag vom 27. Dez 2012
Antwort Antwort
dynamo

Registriert seit: 21. Okt 2008
Ort: Bordesholm
37 Beiträge
 
Delphi 11 Alexandria
 
#1

Textdatei byteweise in MemoryStream speichern - Problem

  Alt 27. Dez 2012, 00:53
Hallo,
ich möchte eine Textdatei byteweise auslesen und dabei byteweise in einen Memorystream speichern.
Hier mein Beispielcode (um den kurz und übersichtlich zu halten, habe ich die Schutzblöcke mal weggelassen).

Code:
procedure makestream(datei:string);
var
   fl :file of char;
   P : char;
   len,fs : longint;
   stream : TMemoryStream;
begin
     Stream := TMemoryStream.Create;
     assignfile(fl,datei);
     reset(fl);
     fs := filesize(fl);

     Len := fs;
     Stream.Write(Len, SizeOf(Len));

     while not eof(fl) do
     begin
      read(fl,p);
//      Len := Length(p);
//      Stream.Write(len, sizeof(p));
      Stream.Write(p,sizeof(p));
     end;

   form1.Memo1.Lines.LoadFromStream(stream);
   stream.Free;
   closefile(fl);
end;
Leider bleibt mein Memofenster leer. Was mach' ich nur falsch?
Wenn diese kleine Procedure mal ordentlich läuft, möchte ich nämlich jedes einzelne Char-Zeichen bearbeiten (codieren), bevor ich es in den Stream schreibe.
Kann vielleicht jemand den Fehler korrigieren?
Jörg
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Textdatei byteweise in MemoryStream speichern - Problem

  Alt 27. Dez 2012, 01:03
Ich nehme an es handelt sich um "Übung" im Zusammenhang mit Streams, daher nur die korrigierte Version und keine Hinweise auf andere Optionen.

Delphi-Quellcode:
procedure makestream(datei: string);
var
  fl: file of AnsiChar;
  P: AnsiChar;
  len, fs: longint;
  stream: TMemoryStream;
begin
  stream := TMemoryStream.Create;
  try
    assignfile(fl, datei);
    reset(fl);
    fs := filesize(fl);

    len := fs;
    stream.Write(len, SizeOf(len));

    while not eof(fl) do
    begin
      read(fl, P);
      stream.Write(P, SizeOf(P));
    end;
    stream.Position := 0; // Streamposition wieder auf Anfang setzen
    stream.Read(len, SizeOf(len)); // Länge lesen, danach erst beginnt der Text
    Form1.Memo1.Lines.LoadFromStream(stream);
    closefile(fl);

  finally
    stream.Free;
  end;

end
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
dynamo

Registriert seit: 21. Okt 2008
Ort: Bordesholm
37 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Textdatei byteweise in MemoryStream speichern - Problem

  Alt 27. Dez 2012, 01:16
Mann - das ging ja schnell (und hat sogar geklappt!) Vielen Dank dafür.
Jörg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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