AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) [D2010] Dateien in Zwischenablage kopieren (PDF)

[D2010] Dateien in Zwischenablage kopieren (PDF)

Ein Thema von H3llsing · begonnen am 29. Jul 2010 · letzter Beitrag vom 16. Mai 2015
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 2. Aug 2010, 12:30
Eine Frage noch: müsste das letzte except nicht eigentlich ein finally sein?
Wir müssen die globale Resource nur im Fehlerfall freigeben. Ansonsten kümmert sich's Clipboard drum.
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 2. Aug 2010, 12:52
Ah, wieder was gelernt, thx.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 2. Aug 2010, 13:30
nochmal vielen Dank @MarkoWarm =)
  Mit Zitat antworten Zitat
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#14

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 15. Mai 2015, 15:47
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;
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#15

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 15. Mai 2015, 15:54
... 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;

//...
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 15. Mai 2015, 15:59
Delphi-Quellcode:
  aList.Delimiter := #0;
  aListString:= aList.DelimitedText;
Markus Kinzler
  Mit Zitat antworten Zitat
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#17

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 15. Mai 2015, 16:23
Delphi-Quellcode:
  aList.Delimiter := #0;
  aListString:= aList.DelimitedText;
... das hatte ich zwischendurch auch einmal so versucht und leider funktionierte das nicht.
Ich bekomme dann beim Einfügen eine Fehlermeldung, dass ein Dateiname/Dateipfad nicht stimmt.

Sehr merkwürdig!
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#18

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 15. Mai 2015, 19:51
#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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Mai 2015 um 20:05 Uhr)
  Mit Zitat antworten Zitat
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#19

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 16. Mai 2015, 13:39
... 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:
aList.Delimiter:=#0;
aListString := aList.DelimitedText;
Ergebnis: 'C:\Folder\Dateiname1.pdf'#0'C:\Folder\Dateiname2. pdf'#0'"C:\Folder\Datei name3.pdf"'


und bei folgendem Code nicht:

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;
'C:\Folder\Dateiname1.pdf'#0'C:\Folder\Dateiname2. pdf'#0'C:\Folder\Datei name3.pdf'
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#20

AW: [D2010] Dateien in Zwischenablage kopieren (PDF)

  Alt 16. Mai 2015, 13:49
if i < aList.Count -1 then kann bestimmt weg.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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