Entwickler-Ecke

Sonstiges (Delphi) - TStringList in die Zwischanablage kopieren


firediver - Sa 03.12.05 17:49
Titel: TStringList in die Zwischanablage kopieren
Hallo,

Ich habe noch ein Problem und bin leider bei der Forumsuche auch nicht fündig geworden.
Ich würde gerne die komplette StringList (siehe Code) in die Zwischenablage kopieren.
Wie muss ich dazu die Funktion Clipboard einsetzen? Clipbrd ist bei uses schon eingetragen.
Meine bisherigen Versuche schlugen aber fehl, es wurde immer der Code der Stringlist in der Zwischenablage abgespeichert.
Wie muss der Code richtig aussehen?


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:
 SL := TStringList.Create;

  SL.Clear; // StringList leeren

      SL.Add(Textfeld1.Text); 
      SL.Add(Auswahlbox1.Text);
      SL.Add(Memo1.Text);
      SL.Add(Memo2.Text);
      SL.Add(Textfeld2.Text);
      SL.Add(Textfeld3.Text);
      SL.Add(Textfeld4.Text);
      SL.Add(Textfeld5.Text);
      SL.Add(Auswahlbox2.Text);
      SL.Add(Auswahlbox7.Text);
      SL.Add(Auswahlbox8.Text);
      SL.Add(Auswahlbox3.Text);
      SL.Add(Auswahlbox4.Text);
      SL.Add(Auswahlbox5.Text);
      SL.Add(Auswahlbox6.Text);
      SL.Add(Textfeld6.Text);
      SL.Add(Textfeld7.Text);
      SL.Add(Auswahlbox9.Text);
      
SL.Free;




greetz

firediver


---

Hab' Sonne im Herzen und Pizza im Bauch denn dann bist du glücklich und satt bist du auch. ;-)

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt


Marco D. - Sa 03.12.05 18:39


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var i:integer;s:string;

clipboard.open;

for i := 0 to SL.count-1 do
begin
s:=s+SL.strings[i]+#13;
end;

clipboar.astext:=s;


BenBE - Sa 03.12.05 20:09

@Koller: Wäre identisch mit Clipboard.AsText := SL.Text; ...


firediver - Sa 03.12.05 20:10

Hi,

das funktioniert leider auch nicht.

[highlight][Warnung] metatag.pas(327): FOR-Schleifenvariable muss eine einfache lokale Variable sein
[Fehler] metatag.pas(329): Inkompatible Typen: 'String' und 'TLabel'
[Fehler] metatag.pas(332): Inkompatible Typen: 'String' und 'TLabel'[/highlight]


Keldorn - Sa 03.12.05 20:13

Hallo

ohne deinen Quelltext kann da viel stehen und die Warnung ist eindeutig.

Mfg Frank


firediver - Sa 03.12.05 20:17


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:
procedure TForm1.Zwischenablage1Click(Sender: TObject);
begin
  SL := TStringList.Create;
  SL.Clear;
  SL.Add(Textfeld1.Text);
  SL.Add(Auswahlbox1.Text);
  SL.Add(Memo1.Text);
  SL.Add(Memo2.Text);
  SL.Add(Textfeld2.Text);
  SL.Add(Textfeld3.Text);
  SL.Add(Textfeld4.Text);
  SL.Add(Textfeld5.Text);
  SL.Add(Auswahlbox2.Text);
  SL.Add(Auswahlbox7.Text);
  SL.Add(Auswahlbox8.Text);
  SL.Add(Auswahlbox3.Text);
  SL.Add(Auswahlbox4.Text);
  SL.Add(Auswahlbox5.Text);
  SL.Add(Auswahlbox6.Text);
  SL.Add(Textfeld6.Text);
  SL.Add(Textfeld7.Text);
  SL.Add(Auswahlbox9.Text);

  Clipboard.AsText := SL.Text
end;


Das war alles, es funktioniert prima. Oder meint ihr man könnte das mit einer Schleife noch einfacher machen?

THX


greetz firediver


BenBE - Sa 03.12.05 20:51

Der Source funktioniert nur unter der Annahme, dass Memo1 und Memo2 einzeilig sind. Und selbst dann, sollte man eher Memo1.Lines.Text nutzen. Für mehrzeilige Dinge innerhalb einer StringList sollte man entweder eine Encodierung vornehmen oder ein Count der Zeilen vornranstellen.


Lannes - Sa 03.12.05 21:09

Hallo,

ich würde für Memos mit mehreren Zeilen das verwenden:

Delphi-Quelltext
1:
SL.AddStrings(Memo1.Lines);