Text ohne jede Formatierung aus Zwischenablage einfügen
-
Hallo
ich möchte beliebigen Text in ein RTF Control einfügen.
Dies löse ich so:
AnsiString z1; ZW=new TClipboard; // neu öffnen if(!ZW->HasFormat(CF_TEXT)) { ShowMessage("Keine Daten in Zwischenablage verfügbar.\r\rEinfügen daher nicht möglich."); delete ZW; return; } z1=ZW->AsText; // und ZW auslesen delete ZW; // und ZW löschen RTF->SelText =z1; // und einfügen
Das funktioniert so auch eigentlich wunderbar.
Problem:
Wenn z.B. aus einer Email ein Text im RTF Format eingefügt wird,
dann werden manchmal aus einer Zeile zwei beim Einfügen. Aufgefallen
ist mir dabei, daß diese Texte dann oft eingerückt sind, also wohl
noch Absatzformatierungen mitbringen. Schaue ich mir das aber mit
Ascii Werten einzeln an, so gibt mir der BCB Anzeige am Cursor das so
aus:
z1="Hat\r\n\r\n\r\nBESTEN DANK\r\n\r\n\r\nPenning"Korrekt wäre aber eigentlich ja so:
z1="Hat\r\rBESTEN DANK\r\rPenning"Screenshot des Emailtextes:
http://www.mtek-software.de/screenshot.bmpEin Ersetzen mit Replace ist nicht möglich, da ich ja nicht weiss,
ob die Anzahl der \r\n korrekt ist oder nicht; denn beim Einfügen z.B.
aus dem Notepad ist es ja korrekt. Auffällig ist, daß ich beim prüfen
der einzelnen Zeichen zwischen Position 4 und 8 zwei Werte >1200000 erhalte
(also vermutlich versteckte Formatierungen???).In einer Schleife kann ich sie aber komischerweise nicht abfragen???
for(int i1=1;i1<z1.Length();i1++) { // alle Zeichen prüfen auf Formatierungen usw. ch=z1[i1]; iAscii=int(ch); // zeichen einzeln als Ascii ermitteln if(iAscii>255) { z1.SubString(i1,1)=char(144); ShowMessage("Hä?"); } // die hohen Werte kommen hier nicht...???? } // ende for(i1 z1=StringReplace(z1,char(144),"",TReplaceFlags() << rfReplaceAll); // LF nur gegen CR tauschen // z1=StringReplace(z1,"\r\n","\r",TReplaceFlags() << rfReplaceAll); // LF+CR nur gegen CR tauschen
Für einen Tipp wäre ich sehr dankbar, ich bekomme das
Problem einfach nicht in den Griff...Danke im voraus,
Stefan
-
Der "Fehler" liegt eher am E-Mail-Programm, da ich den gleichen Effekt habe, wenn ich Text aus einer Mail in eine andere kopiere. Dabei werden dann auch doppelte Leerzeilen eingefügt. Allerdings nicht immer. Wahrscheinlich liegt es am Format der Mail (Text oder HTML). Aber ich hab mir noch nicht die Mühe gemacht das genau auszutesten
-
...ja, dummerweise erkennt OpenOffice und Word es aber korrekt.
Die zeigen allerdings immer einen Return mit hellgrauem Hintergrund
(wie ein Feldzeichen). Irgendwie erkennen die das also...Daher wüsste ich wirklich gerne, woran.
Denn wenn man längere Mails über die ZW kopiert, dann wird
das Ergebniss doch sehr unschön und vor allem elend lang.Gruss Stefan