Autor Beitrag
Ja-Pa
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 458

Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
BeitragVerfasst: Mi 22.10.03 17:33 
Hallo,

ich möchte die Zwischenablage von Windows erst abspeichern, dann für mein Programm intern verwenden und dann die ursprüngliche Zwischenablage wieder setzen.
Wie kann ich den gesamten Inhalt des Clipboards in einer Variable speichern und dann auch wieder setzen?
Es sollte auch möglich sein, wenn Bilder oder Dateien in der Ablage sind. Einfach eine Instanz von TClipboard zu speichern geht leider nicht :(

Gruß, Ja-Pa

_________________
Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Mi 22.10.03 18:01 
Schau mal den Beitrag von P. Below (TeamB) an:
www.swissdelphicente.../showcode.php?id=945
Ja-Pa Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 458

Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
BeitragVerfasst: Do 23.10.03 15:33 
Naja, etwas komplizert und lang :D, aber solange es seinen Zweck erfüllt :wink:
Wer was kürzeres (als 206 Zeilen) weiß, kann es ja trozdem noch posten.

Gruß, Ja-Pa

_________________
Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Do 23.10.03 17:03 
Wo genau is da dein problem? ..du wirst noch öffter mit code zu tun haben, der grössen als 200 zeichen ist. Mach aus den oberen procedure eine unit und gut is :wink: ..die lösung ist doch ideal - alles schön mit streams etc. was will man mehr?

cu,

_________________
mfg.
mâximôv
Ja-Pa Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 458

Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
BeitragVerfasst: Sa 25.10.03 12:39 
Na gut, ihr habt mich überredet :wink:

_________________
Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
Ja-Pa Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 458

Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
BeitragVerfasst: Sa 25.10.03 12:43 
maximus hat folgendes geschrieben:
der grössen als 200 zeichen ist.

Ja 200 Zeichen wär kein Problem, ... aber 200 Zeilen.
Ich mache es jetzt aber trotzdem mit einer neuen Unit.
Es ist nur so, dass ich soviel eigentlich gar nicht gewollt habe :wink:
Eigentlich wollte ich die Zwischenablage nur für ein paar Millisekunden in einer Variablen zwischenspeichern und nicht gleich auf der Festplatte,
aber trotzdem danke. Den Zweck erfüllt es auf jeden Fall :wink:

Gruß, Ja-Pa

_________________
Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Sa 25.10.03 14:08 
Ja-Pa hat folgendes geschrieben:
...
Eigentlich wollte ich die Zwischenablage nur für ein paar Millisekunden in einer Variablen zwischenspeichern und nicht gleich auf der Festplatte,
aber trotzdem danke. Den Zweck erfüllt es auf jeden Fall :wink:
...


Also dann hast du den code anscheinend falsch verstanden! Hier wird nix auf platte gespeichert, wenn du es nicht willst :wink: Das sind doch nur unschuldige streams...ob du sie auf platte (TFileStream) oder in den speicher (TMemoryStream) schreibst bleibt dir überlassen!

Definiere den TMemoryStream einfach als member in deinem objekt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
//oben im objekt
   ms: TMemoryStream; 
...

// im onCreate
  ms := TMemoryStream.Create; 
...
//im onDestroy
  ms.Free; 
...

procedure TForm1.Button1Click(Sender: TObject); 
begin   
    SaveClipboard(ms); 
 end

procedure TForm1.Button3Click(Sender: TObject); 
begin  
    LoadClipboard(ms);   
end;


..es bleibt so alles im speicher! Nur wenn du deine clipboard kopie persistent haben willst, musst du auf platte speichern :wink:

cu,

_________________
mfg.
mâximôv
Ja-Pa Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 458

Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
BeitragVerfasst: Mo 27.10.03 13:26 
Zitat:

ms.SaveToFile('c:\temp\ClipBrdSaved.dat');


Das hab ich gemeint mit speichern auf der Festplatte (lecker :wink:).
Aber wenn es auch anders geht, Danke!
Ich kenne mich mit Streams noch nicht so aus :oops:

mfg, Ja-Pa

_________________
Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.