Autor Beitrag
fsg4u
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 07.10.05 12:39 
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 user profile iconKlabautermann: Postings zusammengefaßt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: 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

ausblenden volle Höhe 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
    { Private decla
    procedure FormCreate(Sender: TObject);rations }

  public
    { Public declarations }
  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'0nil);
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 user profile iconGausi: Delphi-Tags hinzugefügt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: 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...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 14.10.05 12:01 
user profile iconAmateur 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Fr 14.10.05 14:46 
man kann über
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: 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...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700