Für Fragen von Einsteigern und Programmieranfängern...
hbr
Beiträge: 321 Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)
Beitrag
von hbr » Mi 13. Aug 2014, 15:38
theo hat geschrieben:
Na und? Das ist doch völlig wumpe, nur umständlicher.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
const Dta='<html>aha <i> aha </i> aga</html>';
var
aMStream: TMemoryStream;
begin
..................
aMStream.Position:=0;
aFormat:=ClipBoard.FindFormatID('text/html');
if ClipBoard.FindFormatID('text/html') = 0 then
aFormat:=RegisterClipBoardFormat('text/html');
ClipBoard.AddFormat(aFormat, aMStream);
aMStream.Free;
end;
Hallo,
es geht nicht mit viel html-Code!!!!
Die Ablage bleibt leer.
Versuch es mit einer gefüllten HTML-Seite.
Dann wirst Du sehen das es nicht funktioniert mit
'text/html' .
Und mit 'text/plain' geht es aber nur als Text (html-code).
Gruß
Zuletzt geändert von
hbr am Mi 13. Aug 2014, 15:40, insgesamt 1-mal geändert.
theo
Beiträge: 10869 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » Mi 13. Aug 2014, 15:39
Michl hat geschrieben: Hatte eben noch eine Vermutung zuvor hineineditiert...
Warum sollte Libre Office das auf Win anders machen? Ist ja eh Java.
theo
Beiträge: 10869 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » Mi 13. Aug 2014, 15:42
hbr hat geschrieben: es geht nicht mit viel html-Code!!!!
Die Ablage bleibt leer.
Versuch es mit einer gefüllten HTML-Seite.
Dann häng mal deinen HTML Code als Text an, dann versuche ich's.
Vllt. liegt es auch nicht an der Menge sondern am HTML Code.
Michl
Beiträge: 2511 Registriert: Di 19. Jun 2012, 12:54
Beitrag
von Michl » Mi 13. Aug 2014, 15:57
theo hat geschrieben: Warum sollte Libre Office das auf Win anders machen? Ist ja eh Java.
Dafür reicht mein Halbwissen leider nicht, warum man das so machen muss
Nochmal meine Vermutung: kopiere ich aus einem Browser einen selektierten Inhalt mit <Ctrl>+<C> und schaue mir diesen mit dem Button2Click (aus meinem Bsp.) an, so sind die Textpassagen einzeln als 'text/plain' gekennzeichnet. Schaue ich mir den Text aus dem Bsp., was Du bzw. ich gerade ausprobiert haben, dann ist dort nirgendwo ein 'text/plain' sichtbar. Ich vermute jetzt, dass alle Textprogramme, die ich auf meinem Rechner zur Verfügung habe (OpenOffice, Notepad, LazarusIDE etc.) nur nach 'text/plain' suchen und daher nichts zum Einfügen haben.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
theo
Beiträge: 10869 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » Mi 13. Aug 2014, 16:02
@Michl: Verstehe die Logik zwar nicht ganz, aber dann liefer das doch auch noch mit.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
const Dta='<html>aha <i> aha </i> aga</html>';
var
aMStream: TMemoryStream;
begin
Clipboard.AsText:='aha aha aga'; <!----------------------------------
aMStream:=TMemoryStream.Create;
aMStream.Write(Dta,Length(Dta));
aMStream.Position:=0;
aFormat:=ClipBoard.FindFormatID('text/html');
if ClipBoard.FindFormatID('text/html') = 0 then
aFormat:=RegisterClipBoardFormat('text/html');
ClipBoard.AddFormat(aFormat, aMStream);
aMStream.Free;
end;
Sieht dann so aus:
Dateianhänge
Michl
Beiträge: 2511 Registriert: Di 19. Jun 2012, 12:54
Beitrag
von Michl » Mi 13. Aug 2014, 16:06
Ja das geht, der erste Teil wird eingefügt, der zweite nicht!
Liege ich mit meiner Vermutung also doch nicht so verkehrt
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
hbr
Beiträge: 321 Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)
Beitrag
von hbr » Mi 13. Aug 2014, 16:15
Hallo Theo,
versuch doch mal volgendes.
Nim Dir eine Html-Datei mit verschiedenen Standard html-befehlen.
Code: Alles auswählen
aMStream := TMemoryStream.Create;
aMStream.LoadFromFile('d:\testen.htm');
aMStream.Position:=0;
aFormat:=ClipBoard.FindFormatID('text/html');
if ClipBoard.FindFormatID('text/html') = 0 then
aFormat:=RegisterClipBoardFormat('text/html');
ClipBoard.AddFormat(aFormat, aMStream);
aMStream.Free;
Dann wirst Du sehen, das die Zwischenablage leer bleibt.
Gruß
hbr
Beiträge: 321 Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)
Beitrag
von hbr » Mi 13. Aug 2014, 16:49
Hallo,
und der Text wird in die Textverarbeitung so eingesetzt wie er im HTML zu sehen ist ?
Was ist bei Dir anders als bei mir unter Win7 64bit lazarus v1.2.0 32bit???
Gruß
theo
Beiträge: 10869 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » Mi 13. Aug 2014, 16:56
hbr hat geschrieben:
und der Text wird in die Textverarbeitung so eingesetzt wie er im HTML zu sehen ist ?
Ja, natürlich ohne das externe CSS, woher sollte das auch kommen via CB.
Dateianhänge
hbr
Beiträge: 321 Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)
Beitrag
von hbr » Mi 13. Aug 2014, 17:13
Toll!
Das einzige was bei mir geht ist TMemoryStream Lesen und wieder schreiben, sind dann identisch (zur Kontrolle).
Es scheint ja bei anderen auch nicht zu funktionieren, woran könnte es denn legen?
Bei welche Version von Lazarus funktioniert es denn?
theo
Beiträge: 10869 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » Mi 13. Aug 2014, 17:21
hbr hat geschrieben:
Es scheint ja bei anderen auch nicht zu funktionieren, woran könnte es denn legen?
Bei welche Version von Lazarus funktioniert es denn?
Tja, dann hat es doch was mit Windows zu tun. Ist vllt. irgendwo ein Char #0 vorne im Spiel?
Meiner Version ist Lazarus 1.3 r45860M FPC 2.7.1 x86_64-linux-gtk 2
theo
Beiträge: 10869 Registriert: Mo 11. Sep 2006, 19:01
Beitrag
von theo » Mi 13. Aug 2014, 21:29
Naja, hab's mal auf Windows angeschaut. Googeln hilft auch hier.
Z.B. Dieser Code mit Laz geladen und aufs CB kopiert, kommt bei OpenOffice an:
Code: Alles auswählen
Version:0.9
StartHTML:00000173
EndHTML:00001157
StartFragment:00000207
EndFragment:00001121
SourceURL:http://msdn.microsoft.com/en-us/library/aa767917%28VS.85%29.aspx
<html><body>
<!--StartFragment--><div id="code-snippet-4" class="codeSnippetContainer" xmlns=""><div class="codeSnippetContainerCodeContainer"><div id="CodeSnippetContainerCode_68cc6856-c1d4-459b-90cb-28b371d4b7fe" class="codeSnippetContainerCode" dir="ltr">
<div style="color:Black;"><pre>
<BODY><TABLE BORDER><TR><TH
ROWSPAN=2>Head1</TH><TD>Item 1</TD>
<TD>Item 2</TD> <TD>Item 3</TD>
<TD>Item 4</TD></TR><TR><TD>Item
5</TD> <TD>Item 6</TD> <TD>Item
7</TD> <TD>Item
8</TD></TR><TR><TH>Head2</TH><TD>Item
9</TD> <TD>Item 10</TD> <TD>Item
11</TD> <TD>Item
12</TD></TR></TABLE></BODY>
</pre></div>
</div>
</div>
</div>
<p>This appears as test:</p><!--EndFragment-->
</body>
</html>
StartHTML, StartFragment etc. müssen nat. stimmen. Dafür sollte man eine Fkt. schreiben.
Ausserdem heisst das Format nicht text/html sondern
Code: Alles auswählen
aFormat:=ClipBoard.FindFormatID('HTML Format');
if ClipBoard.FindFormatID('HTML Format') = 0 then
aFormat:=RegisterClipBoardFormat('HTML Format');
Windoof halt.
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Michl
Beiträge: 2511 Registriert: Di 19. Jun 2012, 12:54
Beitrag
von Michl » Mi 13. Aug 2014, 22:17
theo hat geschrieben: Ausserdem heisst das Format nicht text/html sondern
Das hatte ich auch erfolglos probiert. ...es lag also an dem nicht ordentlich definierten Header in dem Testbsp. Da lag ich wohl etwas daneben mit meiner Vermutung
Wieder was gelernt! Danke!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
hbr
Beiträge: 321 Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)
Beitrag
von hbr » Do 14. Aug 2014, 00:27
Hallo,
Das hatte ich auch erfolglos probiert. .....
Bei mir führt 'HTML Format' auch zu keinem Ergebnis.
Also ein Back bei Windows.
Nun gibt es wahrscheinlich z.Z. keine Möglichkeit der Darstellung für Windows.
Gruß