AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit TFileStream/ReadBuffer

Offene Frage von "X-Dragon"
Ein Thema von X-Dragon · begonnen am 6. Nov 2003 · letzter Beitrag vom 6. Nov 2003
 
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#1

Problem mit TFileStream/ReadBuffer

  Alt 6. Nov 2003, 09:40
Hat irgendjemand eine Idee warum in meinem Programm gerade beim 16. Eintrag eine falsche Größe ausgelesen wird (belegt dann ca 1 GB Speicher!)? Soweit ich es beobachten konnte werden die Daten richtig verschlüsselt und auch gespeichert, aber beim auslesen tritt immer an der selben Stelle der Fehler auf (an dieser Stelle ist der Wert "67" gespeichert).

Speichern einer StringListe als TFileStream:
Delphi-Quellcode:
  if FileExists(datM) then
    E_Stream := TFileStream.Create(datM, fmOpenWrite or fmShareDenyNone)
    else E_Stream := TFileStream.Create(datM, fmCreate);

  for i := 0 to 22 do
  begin
    txt := XORString(Schluessel[S_Nr(i)],bodytxt[i]); // verschlüsseln von StringList-Einträgen
    Count := Length(txt);
    E_Stream.WriteBuffer(Count, SizeOf(Integer));
    if Count > 0 then
      E_Stream.WriteBuffer(txt[1], Count);
  end;
Auslesen eines TFileStreams in eine StringListe:
Delphi-Quellcode:
  List := TStringList.Create;
  FStream := TFileStream.Create(datM, fmOpenRead);

  for i := 0 to 22 do
  begin
    FStream.ReadBuffer(Count, SizeOf(Count));
    SetLength(txt, Count); // beim 16 Durchlauf, also i = 15 hat Count einen Wert von über 1 Mio.
                            // und in txt steht ein anderer Wert als eigentlich gepspeichert inkl sehr sehr vielen Nullen
                            // die vorherigen Einträge werden alle korrekt ausgelesen

    if Count > 0 then
      if Count < 1000 then
        FStream.ReadBuffer(txt[1], Count)
        else ShowMessage('Daten sind fehlerhaft!'); // hab ich jetzt erstmal als Sicherung eingebaut
                                                     // damit er mir nicht mehr den Speicher vollmüllt

    List.Add(XORString(Schluessel[S_Nr(i)],txt)); // enschlüsseln der ausgelesenen Daten
  end;
  Mit Zitat antworten Zitat
 


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 15:31 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