AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TStream.CopyFrom verändert Quellstream?!
Thema durchsuchen
Ansicht
Themen-Optionen

TStream.CopyFrom verändert Quellstream?!

Ein Thema von xineohp · begonnen am 21. Mai 2005 · letzter Beitrag vom 21. Mai 2005
Antwort Antwort
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#1

TStream.CopyFrom verändert Quellstream?!

  Alt 21. Mai 2005, 00:01
hi,

Ich beschäftige mich gerade zum ersten Mal mit Streams. Dabei tritt gerade folgendes Problem auf:
die Funktion function TStream.CopyFrom(Source: TStream; Count: Int64): Int64; scheint den Quell Stream zu veränderen?!

1. Ich lade eine Datei mit FStream.LoadFromFile(Filename) in einen tMemoryStream.
2. Dann kopiere ich den Stream mit FStream2.CopyFrom(FStream, FStream.Size) in einen zweiten Stream.
3. Zu guter Letzt bilde ich dann mit dem DEC den MD4-Hash über den ersten Stream.

Wenn ich jetzt den zweiten Schritt weglasse/auskommentiere verändert sich die Hashsumme, wie kann das sein?
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.106 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TStream.CopyFrom verändert Quellstream?!

  Alt 21. Mai 2005, 00:31
Moin Peter,

hast Du auch daran gedacht die Eigenschaft Position immer wieder auf 0 zu setzen, damit, z.B., von Beginn des Streams an kopiert wird?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#3

Re: TStream.CopyFrom verändert Quellstream?!

  Alt 21. Mai 2005, 07:28
Wenn du meinst, ob ich die Position nach dem Kopieren (aber vor dem Hashen) wieder auf 0 gesetzt habe, dann könntest du recht haben, ich glaube das hab ich vergessen. Allerdings hätte ich erwartet, dass das in der Hashfunktion automatisch geschieht

EDIT:
OK, daran lag es. Ich hätte ja auch vorher auf die Idee kommen können mal im DEC-Code nachzuschaun ...
Zitat von DEC:
Delphi-Quellcode:
    if StreamSize < 0 then
 {if Size < 0 then reset the Position, otherwise, calc with the specific
  Size and from the aktual Position in the Stream}

    begin
      Stream.Position := 0;
      StreamSize := Stream.Size;
    end;
Danke für den Denkanstoß
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: TStream.CopyFrom verändert Quellstream?!

  Alt 21. Mai 2005, 07:36
Eine Funktion die auf einem Stream arbeitet sollte die Position nicht vor der Verarbeitung veraendern.
Im Extremfall unterstuetzt der Stream das garnicht, sprich er hat weder Anfang noch Ende.
Es geht auch darum das man moeglicherweise eine Funktion implementieren will die nur einen Teil des Streams verarbeiten will.
  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 06:46 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