schitho - Mo 24.05.04 22:29
Titel: RichEdit-Inhalte kopieren und vergleichen
Hi,
ich hab in einem Programm 2 TRxRichEdit (RE1 und RE2) Formulare. Im Programm kopier ich nun den Inhalt vom RE1 zu RE2.
Bei dem Kopieren sollte wirklich der komplette Inhalt kopiert werden, so dass in RE1 und RE2 wirklich alle Zeichen (Bytes) gleich sind.
Doch scheinbar funktioniert das mit meiner Routine (die ich übrigens eh aus diesem Forum habe :oops: ) nicht richtig. Manchmal werden scheinbar bestimmte (nicht sichtbare :?!?: ) Zeichen nicht kopiert.
Hier einmal der Programmcode, mit dem Ihr selbst ausprobieren könnt was ich meine.
(1 Form, 2 Buttons und 2x TRxRichEdit)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RxRichEd;
type TForm1 = class(TForm) RE1: TRxRichEdit; RE2: TRxRichEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
function CompareRichEdits(const Re1, Re2: TRxRichEdit): Boolean; var ms1, ms2: TMemoryStream; begin Result := False; ms1 := TMemoryStream.Create; try Re1.Lines.SaveToStream(ms1); ms2 := TMemoryStream.Create; try Re2.Lines.SaveToStream(ms2); if ms1.Size = ms2.Size then Result := CompareMem(ms1.Memory, ms2.Memory, ms1.Size) finally ms2.Free end finally ms1.Free end end;
procedure SaveToRichEdit(const FromRE : TRxRichEdit; VAR ToRE : TRxRichEdit); var tmpStream: TMemoryStream; begin tmpStream := TMemoryStream.Create; try FromRE.Lines.SaveToStream(tmpStream); tmpStream.Position:=0; ToRe.Lines.LoadFromStream(tmpStream); finally tmpStream.Free end end;
procedure TForm1.Button1Click(Sender: TObject); begin SaveToRichEdit(RE1,RE2); end;
procedure TForm1.Button2Click(Sender: TObject); begin if CompareRichEdits(RE1,RE2)=false then ShowMessage('Leider nicht gleich') else ShowMessage('beide gleich!'); end;
end. |
Das Problem tritt aber nicht immer auf. Meistens jedoch, wenn man aus einer Internetseite nur einen Teil über die Zwischenablage in RE1 hineinkopiert. Wenn ich dann auf den Button1 -Klicke, wird der Inhalt von RE1 nach RE2 kopiert.
Mittels Button2 könnt Ihr dann testen, ob der Inhalt wirklich gleich ist.
Ihr werdet festellen, dass der Inhalt leider nicht immer gleich ist. :cry:
Woran könnte das liegen und wie könnte ich das Problem umgehen?
Gruß
Thomas