![]() |
TRichEdit TextAttributes übernehmen
Hallo liebes Forum,
ich habe bei meinem Aktuellen Programm einen Button der den gesamten Text eines RichEdits verschlüsseln kann. Nach der Verschlüsselung wird dann deer gesamte Text im RichEdit gelöscht, und der verschlüsselte Text wird eingespeichert. Kann ich jetzt die komplette Formation jedes Buchstaben, genau so wie so vorher war, auf den neuen verschlüsselten Text übernehmen? Ich weiß, dass das wahrscheinlich nur über Umwege laufen kann, aber welche? Ich freue mich über gute Tipps :-) |
AW: TRichEdit TextAttributes übernehmen
Ich meine:
Wie müsste zum Beispiel eine Variable deklariert sein, in der man das einspeichern will? Und wie müsste man diese Variable füllen? Man könnte das ja mit einem Array machen, der so Lang gesetzt wird, wie es Zeichen gibt, aber ein Array of was wäre das dann? |
AW: TRichEdit TextAttributes übernehmen
Schau Dir mal RTF mittels eines *dummen* Editors an, der Nichts interpretiert. z.B.
![]() |
AW: TRichEdit TextAttributes übernehmen
Man kann ein RTF Dokument auch mit dem Texteditor öffnen, dann sieht man auch alles.
Ich weiß das eigentlich nur der Text verschlüsselt wird, aber da ich den Text Buchstabe für Buchstabe in ein Array lade, jeden Buchstabe verschlüssel und dann alles wieder ausgebe verschwindet die Formatierung... Deswegen dachte ich, es gäbe eventueel eine Möglichkeit die Formatierung beizubehalten.. Hier mal die Prozedur, die den Text wieder ausgibt:
Delphi-Quellcode:
Ich lade vorher jeden Buchstaben einzeln, der Zeile entsprechend in ein Array of Char. Dannach lade ich dann jede Zeile wie sie vorher war, verschlüsselt in ein Array of String, damit ich wieder ganze Zeilen hab, und dann gebe ich diese Zeilen wieder einzeln aus...
var Text_Array: Array of Array of Char;
Zeilen_Array: Array of String; procedure TVerschluesseln_Formular.Text_ausgeben; var i, j: Integer; begin SetLength(Zeilen_Array, Eingabetext_Formular.Eingabetext.Lines.Count); for i := 0 to Eingabetext_Formular.Eingabetext.Lines.Count - 1 do for j := 0 to Length(Eingabetext_Formular.Eingabetext.Lines[i]) - 1 do Zeilen_Array[i] := Zeilen_Array[i] + Text_Array [i, j]; Eingabetext_Formular.Eingabetext.Lines.Clear; for i := 0 to Length(Zeilen_Array) - 1 do Eingabetext_Formular.Eingabetext.Lines.Add(Zeilen_Array[i]); end; Edit: Übrigens mit:
Delphi-Quellcode:
geht das ganze nicht: "E2064 Der linken Seite kann nichts zugewiesen werden"
var Text_Array: Array of Array of Char;
procedure TVerschluesseln_Formular.Text_ausgeben; var i, j: Integer; begin SetLength(Zeilen_Array, Eingabetext_Formular.Eingabetext.Lines.Count); for i := 0 to Eingabetext_Formular.Eingabetext.Lines.Count - 1 do for j := 0 to Length(Eingabetext_Formular.Eingabetext.Lines[i]) - 1 do Eingabetext_Formular.Eingabetext.Lines[i][j + 1] := Text_Array [i, j]; end; |
AW: TRichEdit TextAttributes übernehmen
Das mit dem Texteditor stimmt seit ein paar Windows-Versionen nicht mehr so ganz. Leider wird der Editor immer intelligenter und versucht, alles Mögliche für uns dumme Menschlein zu interpretieren und wegzufiltern... deshalb nehme ich sicherheitshalber bei Encoding-sensitiven Dingen einen Editor, bei dem ich weiss, dass er wirklich zeigt, was Sache ist. Ausserdem hat der WinVi eine praktische Hex-Anzeige dabei.
Wenn ich jetzt richtig verstehe, dann ist z.B. in einer Zeile ein roter, kursiver Text, der verschlüsselt werden soll und danach soll das Ergebnis der Verschlüsselung stattdessen dort stehen, und zwar in rot und kursiv, oder? Wenn ja, dann versuch eine Selektion zu setzen (SelStart/SelLength), diese zu verschlüsseln und zu ersetzen. Müsste IMHO funken. |
AW: TRichEdit TextAttributes übernehmen
Genau so wollte ich es haben ;-)
Das mit der Selektion müsste ich dann aber in der Ausgabe machen.. muss ich dann jeden einzelnen Buchstaben markieren und ersetzen? Ich probier es mal vielleicht klappt es ja sogar^^ Ich poste dann gleich mal den Text ;-) Edit:
Delphi-Quellcode:
Es scheint nicht zu klappen, beide Texte sind noch vorhanden und es gibt ein unregelmäßiges Buchstabengewursel... Was schein ich falsch zu machen?procedure TVerschluesseln_Formular.Text_ausgeben; var i, j, Markierung: Integer; begin with Eingabetext_Formular.Eingabetext do begin for i := 0 to Lines.Count - 1 do for j := 0 to Length(Lines[i]) - 1 do begin Markierung := Markierung + 1; SetFocus; SelStart := Markierung; SelLength := 1; SelText := Text_Array [i, j]; end; end; end; |
AW: TRichEdit TextAttributes übernehmen
Mein Minitest sieht so aus und funkt:
Delphi-Quellcode:
Wenn Du das RichEdit leerst, werden nur die neuen Zeichen hineingeschrieben. Damit kannst Du mal testen, ob das Richtige geschrieben würde.
procedure TForm1.Button1Click(Sender: TObject);
//begin // RichEdit1.SelStart := 5; // RichEdit1.SelLength := 10; // RichEdit1.SetSelText('Verschlüsselt'); // // RichEdit1.SelStart := 5; // RichEdit1.SelLength := 10; // RichEdit1.SelText := 'blah'; var i, j, Markierung: Integer; begin Markierung := 0; with RichEdit1 do begin for i := 0 to 199 do begin Markierung := Markierung + 1; SelStart := Markierung; SelLength := 1; SelText := chr(32+Markierung); end; end; end; |
AW: TRichEdit TextAttributes übernehmen
Ich hab es jetzt nicht probiert, aber wie würde es bei mehreren Zeilen bei dir aussehen? Die würden doch in eine Zeile wandern oder?
Außerdem hab ich es glaub ich selber ;-) :
Delphi-Quellcode:
Es scheint einwandfrei zu klappen :-) Alle Formatierungen und Absätze bleiben beibehalten ;-) Trotzdem danke für deinen Versuch, kam jetzt nur leider eine Minute zu spät :-Dprocedure TVerschluesseln_Formular.Text_ausgeben; var i, j: Integer; begin with Eingabetext_Formular.Eingabetext do begin for i := 0 to Lines.Count - 1 do for j := 0 to Length(Lines[i]) - 1 do begin SetFocus; SelStart := SendMessage(Handle, EM_LINEINDEX, i, 0) + j; SelLength := 1; SelText := Text_Array [i, j]; end; end; end; |
AW: TRichEdit TextAttributes übernehmen
Freut mich, dass es klappt! :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz