AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Inhalte zweier Stream Objekte miteinander vergleichen
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalte zweier Stream Objekte miteinander vergleichen

Ein Thema von Argent27 · begonnen am 16. Dez 2003 · letzter Beitrag vom 12. Okt 2005
Antwort Antwort
Argent27

Registriert seit: 13. Okt 2003
Ort: Kassel
13 Beiträge
 
Delphi 6 Enterprise
 
#1

Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 13:44
Hallo,

ich wollte mich mal umhören ob es eine simple Möglichkeit gibt den Inhalt zweier Streams (wahrscheinlich TMemoryStream Objekte) zu vergleichen.

Thx im vorraus
Argent
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 13:54
Hallo Argent27,

eine konkrete Methode in der Klasse TStream oä ist mir nicht bekannt, Du könntest allerdings aus beiden Streams lesen, bis einer von ihnen zuende ist oder der gelesene Inhalt voneinander abweicht.
Beachten solltest Du, dass die Position innerhalb des Streams durch diesen Vergleich verändert wird und deshalb zuvor ggf gesichert werden sollte.
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 13:55
Hi,

Wie wär's mit CompareMem() ?
Thomas
  Mit Zitat antworten Zitat
Argent27

Registriert seit: 13. Okt 2003
Ort: Kassel
13 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 14:12
CompareMem sieht gut aus, wenn ich vorher noch die Size der Streams vergleiche sollte das ohne größeren Aufwand laufen.

Ich werd mal ein wenig rumtesten und meine Lösung dann noch einstellen.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 14:15
Bitte beachte, dass der Einsatz von TMemoryStream.Memory nur dann für eine generelle Lösung sinnvoll ist, wenn Du ausschließen kannst, dass Du jemals mit anderen Streams arbeitest.
Andernfalls solltest Du ein "häppchenweises" Vergleichen (zb über 4k) innerhalb einer Schleife in Erwägung ziehen...
gruß, choose
  Mit Zitat antworten Zitat
Argent27

Registriert seit: 13. Okt 2003
Ort: Kassel
13 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 15:21
choose: Bei meinem aktuellen Problem habe ich tatsächlich nur mit MemoryStreams zu tun. An eine Lösung über eine Schleife hab ich auch schon gedacht, aber die wollt ich nach Möglichkeit vermeiden.

Ich hab hier noch ein einfaches Codebeispiel für eine mögliche Lösung:
(Für alle die mal nach dem Thema suchen)

Delphi-Quellcode:
{ Beschreibung: Vergleichen der Inhalte zweier Streams }
procedure TForm1.Button1Click(Sender: TObject);
var
Ms1, Ms2 : TMemoryStream;
begin
  // Erzeugen Streams
  Ms1 := TMemoryStream.Create;
  Ms2 := TMemoryStream.Create;
  try
    Ms1.Clear;
    Ms2.Clear;

    // Füllen mit Text aus zwei Memos
    Memo1.Lines.SaveToStream(Ms1);
    Memo2.Lines.SaveToStream(Ms2);
    // Zurücksetzen Pos
    Ms1.Position := 0;
    Ms2.Position := 0;
    // Vergleiche Länge
    if Ms1.Size = Ms2.Size then Led1.Active := True
    else Led1.Active := False;
    // Vergleiche Inhalt
    Led2.Active := comparemem(Ms1.Memory, Ms2.Memory,Ms1.Size);
  finally
    freeandNil(Ms1);
    freeandNil(Ms2);
  end;
end;
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 15:24
Zitat von Argent27:
choose: Bei meinem aktuellen Problem habe ich tatsächlich nur mit MemoryStreams zu tun.
Sollte auch nur als Hinweis dienen.

Ich gehe zwar davon aus, dass Dein Code die Streams exemplarisch füllt, falls Dein Problem aber tatsächlich der Vergleich zweier Memos ist, sollte ein
Result:= Memo1.Text=Memo2.Text; ausreichen.
gruß, choose
  Mit Zitat antworten Zitat
Argent27

Registriert seit: 13. Okt 2003
Ort: Kassel
13 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 16. Dez 2003, 15:48
Zitat von choose:
Ich gehe zwar davon aus, dass Dein Code die Streams exemplarisch füllt...
Jepp so isses ! Einfach nur schnell hingekleckst um den Zweck zu erfüllen

Gruß
Argent
  Mit Zitat antworten Zitat
Benutzerbild von JWeis
JWeis

Registriert seit: 23. Aug 2005
Ort: Homburg
274 Beiträge
 
Delphi 7 Professional
 
#9

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 12. Okt 2005, 10:15
hi leute ich hab mal den code da oben ausprobiert doch ich hab nen haufen fehler bekommen (siehe anhang)

hann mir jemand erklären warum?
und wie ich die wieder weg bekomme?
Angehängte Grafiken
Dateityp: bmp neu_irfanview_bmp_file_206.bmp (169,2 KB, 7x aufgerufen)
Johannes
Der Pfad der Gerechten ist zu beiden Seiten gesäumt mit Freveleien der Selbstsüchtigen und der Tyrannei böser Männer. Gesegnet sei der, der im Namen der Barmherzigkeit und des guten Willens die Schwachen durch das Tal der Dunkelheit geleitet.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Inhalte zweier Stream Objekte miteinander vergleichen

  Alt 12. Okt 2005, 10:59
Siehe Code-Library : http://www.delphipraxis.net/internal...ct.php?t=65404
Andreas
  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 17:44 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