AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
Zitat:
|
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
Ah, wieder was gelernt, thx.
|
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
nochmal vielen Dank @MarkoWarm =)
|
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
Guten Tag,
ggf. habe ich ein riesiges Brett vor dem Kopf, aber ich versuche Dateien, deren Dateipfad und Dateinamen ich in einer StringListe gespeichert habe mittels CopyFilesToClipboard in die Zwischenablage kopieren, damit ich diese per Strg+V in beispielsweise Outlook einfügen kann.
Delphi-Quellcode:
procedure TForm1.BitBtn5Click(Sender: TObject);
var aList : TStringList; s, aListString : String; begin try aList := TStringList.Create; aList.Clear; // hier wird die Liste mit den Dateinamen erstellt, ich habe die Dateinamen und Pfade auch aus der // Liste mal wieder ausgeben lassen, die sind in Ordnung, wobei die teilweise Leerzeichen enthalten. // Habe aber auch schon versucht die einzelnen Dateinamen inkl. Pfad in Anführungszeichen zu betten. // Alles irgendwie ohne Erfolg. // Muss eigentlich bei dem letzten Dateinamen dann das #0 weggelassen werden, da ja in der // CopyFilesToClipboard dann #0#0 ergänzt wird? aListString := ''; for i := 0 to aList.Count -1 do begin s:= aList[i]; aListString:= aListString + s + #0; end; CopyFilesToClipboard(aListString); finally FreeAndNil(aList); end; end; |
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
... kaum habe ich mir und Euch diese Frage gestellt:
Muss eigentlich bei dem letzten Dateinamen dann das #0 weggelassen werden, da ja in der CopyFilesToClipboard dann #0#0 ergänzt wird? Jetzt habe ich das mal geändert und nun funktioniert es natürlich :-)
Delphi-Quellcode:
//...
for i := 0 to aList.Count -1 do begin s:= aList[i]; if i < aList.Count -1 then aListString:= aListString + s + #0 else aListString:= aListString + s; end; //... |
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
Delphi-Quellcode:
aList.Delimiter := #0;
aListString:= aList.DelimitedText; |
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
Delphi-Quellcode:
... das hatte ich zwischendurch auch einmal so versucht und leider funktionierte das nicht.
aList.Delimiter := #0;
aListString:= aList.DelimitedText; Ich bekomme dann beim Einfügen eine Fehlermeldung, dass ein Dateiname/Dateipfad nicht stimmt. Sehr merkwürdig! :pale: |
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
#0 = Ende es TStringList Textes?
Ich könnte fast wetten, daß bei Delemiter=#0 alle String gequotet werden, aber du hast dir natürlich im Debugger angesehn, was als aListString raus kommt, bzw. was an CopyFilesToClipboard übergeben wird. :stupid: |
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
... ja Du hast recht! Im Debugger habe ich nicht geschaut.
Ich hatte mir versucht den String anderweitig anzuschauen (in einem Memo ausgegeben), was durch das #0 natürlich nicht wirklich schlau ist. Doppelte Anführungszeichen werden scheinbar hinzugefügt bei Strings mit Leerzeichen:
Delphi-Quellcode:
Ergebnis: 'C:\Folder\Dateiname1.pdf'#0'C:\Folder\Dateiname2. pdf'#0'"C:\Folder\Datei name3.pdf"'
aList.Delimiter:=#0;
aListString := aList.DelimitedText; und bei folgendem Code nicht:
Delphi-Quellcode:
'C:\Folder\Dateiname1.pdf'#0'C:\Folder\Dateiname2. pdf'#0'C:\Folder\Datei name3.pdf'
for i := 0 to aList.Count -1 do
begin s:= aList[i]; if i < aList.Count -1 then aListString:= aListString + s + #0 else aListString:= aListString + s; end; |
AW: [D2010] Dateien in Zwischenablage kopieren (PDF)
Delphi-Quellcode:
kann bestimmt weg.
if i < aList.Count -1 then
Diese Listen sind ja so definiert #0 = nächster Listeneintrag #0#0 = Ende der Liste (wobei #0#0 eigentlich für einen Leerstring steht) Und da das Ende als #0#0 deklariert it, wird alles danach ignoriert. Es ist also egal, ob am Ende #0#0 oder #0#0#0 steht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz