Clipboard.HasPictureFormat - unter Linux
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Clipboard.HasPictureFormat - unter Linux
Hallo,
Ich nutze die Funktion "Clipboard.HasPictureFormat" um heraus zu finden ob in der Linux Mint Zwischenablage eine Grafik drin ist.
Wenn ich
- mit meiner EXE eine Grafik in die Zwischenablage (ZW) kopiere ist der Wert TRUE
- mit meiner EXE einen Text in die ZW kopiere ist der Wert FALSE
- mit einem anderen Programm eine Grafik in die ZW kopieren, dann merkt das meine EXE erst nach dem Neustart, dass da eine Grafik in der ZW ist >> Fehler.
Ich habe das mit Lazarus V3.4 unter Linux getestet. Das geht nicht so richtig.
In der Regel arbeite ich mit Windows, bei Lazarus V4RC3 sieht der Code identisch aus wie von Lazarus V3.4. Unter Windows hatte ich damit noch keine Probleme.
Kann man Lazarus dazu zwingen die ZW vom OS neu zu untersuchen? Aktuell schaut Lazarus im Cache nach und merkt nicht zuverlässig dass es in der ZW nun was anderes gibt.
VG Markus.
Ich nutze die Funktion "Clipboard.HasPictureFormat" um heraus zu finden ob in der Linux Mint Zwischenablage eine Grafik drin ist.
Wenn ich
- mit meiner EXE eine Grafik in die Zwischenablage (ZW) kopiere ist der Wert TRUE
- mit meiner EXE einen Text in die ZW kopiere ist der Wert FALSE
- mit einem anderen Programm eine Grafik in die ZW kopieren, dann merkt das meine EXE erst nach dem Neustart, dass da eine Grafik in der ZW ist >> Fehler.
Ich habe das mit Lazarus V3.4 unter Linux getestet. Das geht nicht so richtig.
In der Regel arbeite ich mit Windows, bei Lazarus V4RC3 sieht der Code identisch aus wie von Lazarus V3.4. Unter Windows hatte ich damit noch keine Probleme.
Kann man Lazarus dazu zwingen die ZW vom OS neu zu untersuchen? Aktuell schaut Lazarus im Cache nach und merkt nicht zuverlässig dass es in der ZW nun was anderes gibt.
VG Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Clipboard.HasPictureFormat - unter Linux
Ich hab's grad mal probiert. Funktioniert bei mir.
Der Timer prüft alle Sekunde und enabled/disabled den Paste Button
Edit: Ich habe es getestet mit Lazarus 4 RC3
Edit2: Unter Windows hat es auch funktioniert.
Der Timer prüft alle Sekunde und enabled/disabled den Paste Button
Edit: Ich habe es getestet mit Lazarus 4 RC3
Edit2: Unter Windows hat es auch funktioniert.
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Clipboard.HasPictureFormat - unter Linux
Vielen Dank für die kleine App.
Bei mir mit Lazarus V3.4 funktioniert deine App korrekt.
Jedoch bei meiner App ist
bZW := Clipboard.HasPictureFormat;
nicht korrekt.
Dein Programm habe ich nur gestartet, ohne eine Taste zu drücken.
Ich versuche das mal mit Lazarus V4 (Linux), aber kann das erst heute Abend machen.
Bei mir mit Lazarus V3.4 funktioniert deine App korrekt.
Jedoch bei meiner App ist
bZW := Clipboard.HasPictureFormat;
nicht korrekt.
Dein Programm habe ich nur gestartet, ohne eine Taste zu drücken.
Ich versuche das mal mit Lazarus V4 (Linux), aber kann das erst heute Abend machen.
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: Clipboard.HasPictureFormat - unter Linux
Manchmal ist es erhellend, einfach mal zu schauen was drin ist:
@fliegermichl: Du hast in dem Zip deine ganzen gesammelten Werke reingepackt. Das war bestimmt keine Absicht?
Code: Alles auswählen
Clipboard.SupportedFormats(Memo1.Lines);
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Clipboard.HasPictureFormat - unter Linux
Ups, Ich habe ein Verzeichnis Lazarus_Projects. Da sind normalerweise meine Projekte drin. Darunter gibt es ein Verzeichnis temp.theo hat geschrieben: Mi 23. Apr 2025, 12:23 Manchmal ist es erhellend, einfach mal zu schauen was drin ist:
@fliegermichl: Du hast in dem Zip deine ganzen gesammelten Werke reingepackt. Das war bestimmt keine Absicht?Code: Alles auswählen
Clipboard.SupportedFormats(Memo1.Lines);
In temp habe ich so verschiedene Testdinger u.a. eben auch das kleine Testprojekt aber nicht in einem separaten Verzeichnis.
Ich hab die Funktion "Projekt veröffentlichen" verwendet und wusste nicht, daß diese Funktion alle Testdinger mit exportiert.
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Clipboard.HasPictureFormat - unter Linux
Ich habe da mal native Versuche mit dem Clipboard gemacht,Kann man Lazarus dazu zwingen die ZW vom OS neu zu untersuchen? Aktuell schaut Lazarus im Cache nach und merkt nicht zuverlässig dass es in der ZW nun was anderes gibt.
Wen man <space> drückt werden alle Varianten gelistet, welcher der Host zu Verfügung stellt.
https://github.com/sechshelme/Lazarus-X ... ow_Targets.
Die Ausgabe sieht dann etwa so aus
Der erste Test in der Inhalt von einem ScreeShoot, das sieht man gut, das da ein PNG zu Verfügung steht.
Bei Zweiten Versuch habe ich Ctrl-C im Browser gemacht.
Code: Alles auswählen
exposure
------------ SelectionNotify ---------------------
(0) image/png
(1) TARGETS
(2) TIMESTAMP
------------ SelectionNotify ---------------------
(0) TIMESTAMP
(1) TARGETS
(2) SAVE_TARGETS
(3) MULTIPLE
(4) STRING
(5) UTF8_STRING
(6) TEXT
(7) chromium/x-source-url
(8) text/plain
(9) text/plain;charset=utf-8
(a) chromium/x-internal-source-rfh-token
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Clipboard.HasPictureFormat - unter Linux
In meiner App wird deutlich weniger verfügbare Clipboard Varianten gezeigt als von der Demo App:
- Text mit meinem Programm in die ZW kopiert
- Dann eine Grafik von einem fremden Programm in die ZW kopiert
- Meine App merkt überhaupt nicht dass die Grafik in der ZW nun drin ist:
Im Quellcode ist "CanReadFromCache" gesetzt und der merkt überhaupt nicht dass da was anderes in der ZW drin ist.
Irgendwie funktioniert der Mechanismus nicht, dass es etwas anderes in der ZW gibt und daher lädt meine App das Bild nicht.
Wenn ich mit meiner eigenen App ein Bild in die ZW kopiere, dann weis er das. Als ob meine App eine "private" ZW hat und nicht die vom Linux, aber dennoch kann ich die Dinge aus meiner App in andere Programme einfügen.
Das ist der Code um die Texte in dem Memo1 an zu zeigen:
- Text mit meinem Programm in die ZW kopiert
- Dann eine Grafik von einem fremden Programm in die ZW kopiert
- Meine App merkt überhaupt nicht dass die Grafik in der ZW nun drin ist:
Im Quellcode ist "CanReadFromCache" gesetzt und der merkt überhaupt nicht dass da was anderes in der ZW drin ist.
Irgendwie funktioniert der Mechanismus nicht, dass es etwas anderes in der ZW gibt und daher lädt meine App das Bild nicht.
Wenn ich mit meiner eigenen App ein Bild in die ZW kopiere, dann weis er das. Als ob meine App eine "private" ZW hat und nicht die vom Linux, aber dennoch kann ich die Dinge aus meiner App in andere Programme einfügen.
Das ist der Code um die Texte in dem Memo1 an zu zeigen:
Code: Alles auswählen
Clipboard.SupportedFormats(frmMain.Memo1.Lines);
For i := frmMain.Memo1.Lines.Count - 1 DownTo 0 Do
If Trim(frmMain.Memo1.Lines[i]) = '' Then
frmMain.Memo1.Lines.Delete(i);
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Clipboard.HasPictureFormat - unter Linux
Ich habe mit FpcUpDeluxe nun Lazarus V4.99 mit FPC V3.2.2 installiert.
Es ist das gleiche, also geht nicht so richtig.
Es ist das gleiche, also geht nicht so richtig.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- greye
- Beiträge: 45
- Registriert: So 16. Feb 2014, 15:38
- OS, Lazarus, FPC: Debian/Fedora/Windows, Lazarus 3.6/4.0RC2, FPC 3.2.2
- CPU-Target: 64 Bit
Re: Clipboard.HasPictureFormat - unter Linux
Äh, ja, irgendwas ist da. Es gibt mindestens zwei Zwischenablagen unter Linux, wobei die eine nur für Text ist.MmVisual hat geschrieben: Mi 23. Apr 2025, 14:53Als ob meine App eine "private" ZW hat und nicht die vom Linux, aber dennoch kann ich die Dinge aus meiner App in andere Programme einfügen.
Siehe z.B.: https://wiki.ubuntuusers.de/Zwischenablage/
Allerdings kann das auch stark vom verwendeten Desktop Environment abhängen. Seit einiger Zeit kämpfe ich unter KDE damit, dass z.B. Screenshots zwar irgendwie da sind, aber nicht überall eingefügt werden können, wo es gehen sollte. Manchmal passiert das auch mit Text.
Z.B. mache ich einen Screenshot aus dem Browser heraus. Den kann ich dann kopieren und im Browser wieder irgendwo einfügen, aber ein externes Programm wie Gimp sieht ihn nicht. Das liegt aber nicht an der Screenshot-Funktion des Browsers, denn umgekehrt ist es auch so: Bild außerhalb kopieren und dann einfügen geht oder geht nicht, je nach Tagesform.
Irgendwie fühlt es sich an, als wären da plötzlich drei oder vier Zwischenablagen, die wetteifern, welche mir das Leben am schwersten macht. Rausgefunden, woran das jetzt genau liegt, habe ich noch nicht.
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Clipboard.HasPictureFormat - unter Linux
Genau, es gibt 3. Wobei eigentlich nur noch "clipboard" relevant ist, "primary" und "secondary" sind alte Relikte aus der X11 Zeit.Äh, ja, irgendwas ist da. Es gibt mindestens zwei Zwischenablagen unter Linux, wobei die eine nur für Text ist.
https://wiki.ubuntuusers.de/xsel/
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Clipboard.HasPictureFormat - unter Linux
Ich habe mal danach gesucht wo überall in meinem Programm irgend was mit "Clipboard." gemacht wird. Da ist nicht spezielles drin:
Unter Windows kompilliert funktioniert der Code ja auch, nur unter Linux gibt es die Probleme.
Unter Windows kompilliert funktioniert der Code ja auch, nur unter Linux gibt es die Probleme.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Clipboard.HasPictureFormat - unter Linux
Merkwürdig,
wenn es doch aber mit der kleinen TestApp geht.
Liegen vielleicht irgendwelche anderen Units dazwischen, die Einfluss auf das Clipboard haben?
wenn es doch aber mit der kleinen TestApp geht.
Liegen vielleicht irgendwelche anderen Units dazwischen, die Einfluss auf das Clipboard haben?
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Clipboard.HasPictureFormat - unter Linux
Meine App sieht nur einen zu vorletzt kopierten Text in der ZW, hingegen das zuletzt in die ZW Ablage kopierte ist eine Grafik von einem anderen Programm.
Lazarus arbeitet mit einem Cache, den man nicht deaktivieren kann. Ich denke dass daher das Problem kommt.
Lazarus arbeitet mit einem Cache, den man nicht deaktivieren kann. Ich denke dass daher das Problem kommt.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Clipboard.HasPictureFormat - unter Linux
Wo hast du diesen Suchen Dialog gefunden, denn kenne ich gar nicht.Ich habe mal danach gesucht wo überall in meinem Programm irgend was mit "Clipboard." gemacht wird. Da ist nicht spezielles drin:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Clipboard.HasPictureFormat - unter Linux
Text markieren
Shift + Strg + F
Dann kommt der Dialog zum in Dateien zu suchen, dann kann man alle Projektdateien auswählen.
Shift + Strg + F
Dann kommt der Dialog zum in Dateien zu suchen, dann kann man alle Projektdateien auswählen.
EleLa - Elektronik Lagerverwaltung - www.elela.de