Einzelnen Beitrag anzeigen

Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#9

Re: Sonderzeichen in Textdateien

  Alt 31. Mai 2005, 20:30
Hallo marabu,
erstmal danke für deine Antwort!

Zitat:
Die ersten zwei Schritte sind unkritisch. Damit der IE die Zwischenablage richtig beschicken kann, registriert er sein eigenes Clipboard-Format mit Namen "HTML Format" und erhält vom System einen Formatschlüssel zurück. In deinem Code verwendest du eine Konstante, die es so nicht gibt.
Sorry, das Beispielprojekt war nicht sorgfältig genug ausgearbeitet... Ich habe mir schon gedacht, dass der IE sein Format "dynamisch" registriert, aber das Format dann doch als Konstante eingebunden.

Im richtigen Projekt werden nacheinander alle Formate aus der Zwischenblage ausgelesen, daher kein Problem.

Zitat:
Nur am Rande möchte ich erwähnen, dass du beim Arbeiten mit der Delphi ClipBoard-Komponente die Methode HasFormat() statt der API-Funktion IsClipboardFormatAvailable() hättest benutzen können.
Oh, hab ich in der Eile wohl übersehen (arbeite aus Performancegründen normalerweise nur mit den Clipboard-API-Funktionen).

Zitat:
Das Format CF_HTML ist UTF-8 codiert. Du übernimmst es einfach als AnsiString - das muss schief gehen.
Eben das ist ja mein Problem....

Zitat:
Im Prinzip musst du den Prolog des Formates auswerten. Näheres dazu erfährst du im Platform SDK. Im Prolog erfährst du die Positionen des HTML-Context, des HTML-Fragments und der eigentlichen Selektion, die markiert und kopiert wurde. Erst mit diesen Angaben kannst du vernünftig auf den Speicher zugreifen.
Danke für den Hinweis! Für eine erste Implementierung wird es aber genügen, den Prolog unberührt zu lassen. "Vernünftig auf den Speicher zugreifen" kann man auch ohne Auswertung des Prologs, das HTML ist dann eben nicht 100% sauber.

Zitat:
Alle im HTML-Context enthaltenen Zeichen solltest du mittels UTF8Decode() für die Weiterverarbeitung nach Ansi umwandeln.
Darauf habe ich gewartet. Das ist der Hinweis, den ich brauch(t)e. Danke!

Zitat:
Das wird sicherlich spannend. Und am Ende kommt heraus, dass du eigentlich nur den Text haben wolltest - den du mit ClipBoard.AsText() hättest erhalten können.
Hältst du mich für ?!

Gruß, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat