Autor |
Beitrag |
Hochhaus
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Mo 03.12.12 19:41
Hallo allerseits !
für meinen Texteditor habe ich die RichEdit-Komponente verwendet. Soweit, so gut. Normalerweise funktioniert dies problemlos mit Textdateien. Wenn ich nun aber formatierten Text (z.Bsp. Fettdruck) aus dem Web hineinkopiere, kommen die Formatierungen mit hinein in den Text.
Wie kann ich dies ändern ? Ich will nur Text speichern und kein Zugemüse.
Vielen Dank für Eure Hilfe !
Hochhaus Moderiert von Narses: Topic aus VisualCLX (Component Library for Cross Platform) verschoben am So 09.12.2012 um 22:04
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 03.12.12 19:55
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Mo 03.12.12 19:59
Das habe ich schon probiert ! Dann enthält meine leere Datei plötzlich chinesische Schriftzeichen ( Bug in Delphi)
Gruss,
Hochhaus
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 03.12.12 20:23
Hochhaus hat folgendes geschrieben : | Dann enthält meine leere Datei plötzlich chinesische Schriftzeichen ( Bug in Delphi) |
Dann halt den Text aus der Zwischenablage mit
Delphi-Quelltext 1:
| SendMessage(RichEdit1.Handle, EM_PasteSpecial, CF_Text, 0); |
einfügen.
Siehe hierzu auch: mc-computing.com/languages/RichEdit.htm (ziemlich in der Mitte)
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Mo 03.12.12 20:32
---> [DCC Fehler] CHILD.PAS(212): E2003 Undeklarierter Bezeichner: 'EM_PasteSpecial'
Was nun ?
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 03.12.12 20:35
Hochhaus hat folgendes geschrieben : | ---> [DCC Fehler] CHILD.PAS(212): E2003 Undeklarierter Bezeichner: 'EM_PasteSpecial' |
"uses RichEdit". Hatte ich aber oben geschrieben.
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Mo 03.12.12 20:50
Ok ! Super ! Die Formatierungen sind jetzt weg. Aber die Datei ist immer noch nicht ausführbar und grösser als sie sein sollte. Siehe Beilage !
Hochhaus
Einloggen, um Attachments anzusehen!
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 03.12.12 21:23
Für diesen Beitrag haben gedankt: Hochhaus
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 03.12.12 21:33
Hochhaus hat folgendes geschrieben : | Das habe ich schon probiert ! Dann enthält meine leere Datei plötzlich chinesische Schriftzeichen ( Bug in Delphi) |
Den hatte ich ja gemeldet:
qc.embarcadero.com/wc/qcmain.aspx?d=105991
Eigentlich sollte es aber gehen, wenn man alles zur Laufzeit setzt, zumindest ging bei mir dann alles.
Und wenn du für den Eintrag votest, wird er vielleicht auch schneller behoben. 
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Mo 03.12.12 21:33
--> Gerd Kayser
Aber das tue ich ja schon !
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Procedure TFrmChild.SaveToFile(S: String); Begin RichEdit1.Cursor := crHourGlass; Try RichEdit1.PlainText := True; RichEdit1.Lines.SaveToFile(S); RichEdit1.Modified := False; Finally RichEdit1.Cursor := crDefault; End; End; |
Hochhaus
P.S. Da sind noch mehr Bugs im RichEdit drin, glaube ich ... ...
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 03.12.12 22:19
Ich selbst habe in einem Editorprojekt TRichEdit auch ausschließlich für RTF-Texte verwendet. Alles andere läuft da bei mir mit SynEdit. 
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Di 04.12.12 08:11
Wie ich gesehen habe, ist die estellte Datei exakt doppelt so gross wie eine reine Textdatei. (FED.EXE mit Delphi XE2 erstellt) Falls das Editorprojekt mit Delphi 6 erstell wird, hat die Textdatei die richtige Grösse.
Gruss,
Hochhaus
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Di 04.12.12 09:18
UTF-16 = 2 Byte je Zeichen, Ansi = 1 Byte je Zeichen. Delphi ab 2009 verwendet Ersteres, Du musst also konvertieren.
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Di 04.12.12 10:11
WasWeißDennIch hat folgendes geschrieben : | UTF-16 = 2 Byte je Zeichen, Ansi = 1 Byte je Zeichen. Delphi ab 2009 verwendet Ersteres, Du musst also konvertieren. |
Ok. Und wie konvertiere ich von UTF nach ANSI ?
Hochhaus
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 04.12.12 10:12
Hochhaus hat folgendes geschrieben : | Wie ich gesehen habe, ist die estellte Datei exakt doppelt so gross wie eine reine Textdatei. (FED.EXE mit Delphi XE2 erstellt) Falls das Editorprojekt mit Delphi 6 erstell wird, hat die Textdatei die richtige Grösse. |
Was heißt richtige Größe? Du hast dort wie WasWeißDennIch geschrieben hat, Unicode. Bei Delphi 6 kannst du z.B. chinesische Zeichen gar nicht darstellen, deshalb brauchst du da weniger Platz.
Hochhaus hat folgendes geschrieben : | Ok. Und wie kovertiere ich von UTF nach ANSI ? |
Eine Konvertierung in Ansi macht nur Sinn, wenn man auch wirklich dieses Format braucht. Ein Editor sollte dies normalerweise als Option anbieten, siehe Notepad von Windows oder Notepad++...
Aber standardmäßig macht es keinen Sinn auf Unicode zu verzichten...
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Di 04.12.12 10:16
Von mir aus gesehen macht es schon Sinn: Nur als reiner Text sind .BAT-Dateien auch ausführbar ...! Im Unicode dagegen hagelt es Fehlermeldungen.
Gruss,
Hochhaus
Wie ich gesehen habe, werden nur neu erstellte Dateien im Unicode gespeichert. Bestehende Textdateien (Ansi) behalten ihr Format.
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 04.12.12 11:04
Für Batchdateien ist das natürlich richtig, ja. Wenn es um die geht, müssen die umgewandelt werden. Am einfachsten indem du TStringList nimmst und dort beim Speichern als zweiten Parameter die passende Kodierung angibst.
Für diesen Beitrag haben gedankt: Hochhaus
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Di 04.12.12 11:09
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Di 04.12.12 11:12
Verstehe ich das richtig: Mit einem RichEdit geht das nicht ? Weshalb kann dann das RichEdit bestehende Ansi-Dateien nach einer Änderung im Text wierder als Ansi speichern ? Nur neue Dateien werden als Unicode abgelegt.
Hochhaus
Soeben habe ich das ausprobiert mit einem Richedit: Es funktioniert !
Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Procedure TFrmChild.SaveToFile(S: String); Begin RichEdit1.Cursor := crHourGlass; Try RichEdit1.PlainText := True; RichEdit1.Lines.SaveToFile(S, TEncoding.Default); RichEdit1.Modified := False; Finally RichEdit1.Cursor := crDefault; End; End; |
Hochhaus Moderiert von Narses: Beiträge zusammengefasstWelche Werte kann der Wert "TEncoding" haben ? Wo findet man entsprechende Hinweise ?
Gruss,
Hochhaus
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Di 04.12.12 14:12
"TEncoding." eintippen und etwas warten oder CTRL-SPACE drücken  . Alternativ in der Online-Hilfe nachlesen oder per STRG-linke Maustaste nach SysUtils abspringen (AFAIK nicht in der Starter-Edition).
Für diesen Beitrag haben gedankt: Hochhaus
|
|