Entwickler-Ecke
Sonstiges (Delphi) - Zwischenablage auch nach Beendigung des Programmes behalten?
fsg4u - Fr 07.10.05 12:39
Titel: Zwischenablage auch nach Beendigung des Programmes behalten?
hey
wahrscheinlich ganz einfache Frage. Mein Programm kopiert einen String in die Zwischenabalge. Klappt auch ohne Probleme.Aber wenn ich das Programm schließe.Ist die Zwischenablage wieder leer.
Wie kann ich das beheben??
danke FSG
ps. ich lasse das Programm automatisch schließen mit close;
FSG
Moderiert von
Klabautermann: Postings zusammengefaßt.
jaenicke - Fr 07.10.05 13:07
Wie du das Programm schließt ist dabei uninteressant, aber wie kopierst du den String? Vermutlich fängst du das Schreiben an, kopierst dann den String, gibst die Zwischenablage aber nicht frei oder sowas.
Wie es geht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| uses ClipBrd;
Clipboard.AsText := 'Test'; |
Oder auch mit den normalen Funktionen CopyToClipboard oder so von einem Memo o.ä.
Jedenfalls bleibt damit bei mir alles in der Ablage, auch wenn das programm geschlossen wird.
fsg4u - Sa 08.10.05 11:19
ich hab jetzt mal meinen ganzen Code geschickt. Und so bleibt es leider nicht in der zwischenablage(hab die inetadresse natürlich geändert)
Noch irgendeine Idee?
Danke FSG
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| unit ipclientpas;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,QClipbrd,urlmon, ExtCtrls;
type TForm1 = class(TForm) Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private public end;
var Form1: TForm1; e:textfile; ip1:string; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin UrlDownloadToFile(nil, 'http://blablabla.de/ip.htm', 'c:\ip.htm', 0, nil); assignfile(e,'c:\ip.htm'); reset(e); readln(e,ip1); closefile(e); ClipBoard.AsText:=ip1; timer1.enabled:=true; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin close; end;
end. |
Moderiert von
Gausi: Delphi-Tags hinzugefügt.
jaenicke - Fr 14.10.05 10:43
Du hast nicht geschrieben, dass du dein Programm auch für Linux schreibst!
Die benutzte QT-Bibliothek für Crossplatform-Development löscht in der Tat den Zwischenablageninhalt wieder.
Das liegt an der Konzeption der Zwischenablage unter Linux wenn ich das recht sehe, aber darauf muss ich ja hier nicht näher eingehen.
Klar ist:
Unter Windows funktioniert es erst mal, wenn du statt QClipBrd für Crossplatform einfach die Unit ClipBrd nur für Windows benutzt.
Und für Linux musst du dann ggf. mit Compilerdirektiven arbeiten...
Und wenn du mit Linux gar nicht arbeiten willst, dann musst du nur das Q vor der ClipBrd-Unit löschen und alles geht. In diesem Fall würde ich mich allerdings fragen, warum du überhaupt die Crossplatform-Unit benutzt hast.
Diese haben nämlich auch andere etwas eigentümliche Verhaltensweisen, die mit der Qt-Bibliothek zusammenhängen...
Amateur - Fr 14.10.05 11:06
und gibts nen grund warum du nen timer anmachst um das prog zu beenden? kannste auch einfach so ins oncreate oder onactivate close schreiben...
Martin1966 - Fr 14.10.05 11:13
Na ja, dann wäre wohl ein Projekt ohne ein Fenster das beste. Warum ein Fenster erzeugen wenn man es anschl. sofort wieder schließt? ;-)
Lg Martin
jaenicke - Fr 14.10.05 12:01
Amateur hat folgendes geschrieben: |
und gibts nen grund warum du nen timer anmachst um das prog zu beenden? kannste auch einfach so ins oncreate oder onactivate close schreiben... |
Dein Username passt ja wie die Faust aufs Auge :rofl:
(Das ist natürlich ein Scherz :wink: )
Das geht jedenfalls nicht, schließlich wird das Fenster ja da gerade erst erzeugt, da KANN man es nicht wieder schließen.
Aber klar ist, exakt der Quelltext, der jetzt in dem FormCreate liegt kann natürlich 1-zu-1 in den Projekt-Quelltext und das Fenster aus dem Projekt raus.
(Menü Projekt --> Quelltext anzeigen, dort kann dann alles zwischen begin und end mit dem Code aus FormCreate ersetzt werden.)
Amateur - Fr 14.10.05 14:46
man kann über
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.FormActivate(Sender: TObject); begin close; end; |
das fenster wieder schließen lassen. der name passt nicht wie die faust aufs auge!
aber natürlich wäre ne consolenanwendung oder ganz ohne fenster das beste! thx
jaenicke - Mo 17.10.05 10:03
Ich meinte FormCreate, da geht es nicht! Deshalb hab ich ja auch von "dort wird ja das Fenster gerade erst erzeugt" gesprochen!
Amateur - Mo 17.10.05 14:07
ja ok deswegen hatte ich ja auch geschrieben oncreate oder onactivate... ist ja auch egal. jedenfalls geht es so. und das ist das wichtigste...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!