Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Dateien vom Explorer per Drag & Drop in Listbox? (https://www.delphipraxis.net/31338-mehrere-dateien-vom-explorer-per-drag-drop-listbox.html)

alcaeus 9. Okt 2004 08:53

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
Hi Nico,

Delphi-Quellcode:
for LCount := 0 to (Lanzahl - 1) do
begin
  Lsize := DragQueryFile(Msg.WParam, LCount , nil, 0) + 1;
  LDateiname:= StrAlloc(Lsize);
  DragQueryFile(Msg.WParam,LCount , LDateiname, Lsize);
  // do Something with "LDateiname"
  StrDispose(LDateiname);
end;
Ich schätze mal, du könntest fie Dateiendung mit Delphi-Referenz durchsuchenExtractFileExt prüfen, und zwar genau da wo der Kommentar ist. Getestet habe ich den Code nicht, deshalb kann ich nicht garantieren, dass es auch funktioniert.

Greetz
alcaeus

Nicodius 9. Okt 2004 08:55

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
DANKE ES GEHT jetzt

@alcaeus danke, nicht gesehen dass das mit dem LDateiname in der Schleife war ;)



danke!


aber wie mach ich das noch mit dem ordner reinziehen und filtern.. Kommda nicht mit dem code zusammen


@luckie hast du vl den QT parat?



mfg

Nicodius

Luckie 9. Okt 2004 08:59

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
Zitat:

Zitat von Nicodius
@luckie hast du vl den QT parat?

nein, habe so was noch nie gemacht. Aber steht doch alles in der Code-Lib und hier im Thread. Musst du nur noch zusammensetzten.

Nicodius 9. Okt 2004 09:06

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
guten morgen luckie,


ok danke werd schauen ob ichs schaffe sonst : :coder: ich wieder hier rein


danke ;)

Nicodius 9. Okt 2004 13:00

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
@Luckie --> wie mach ich das jetzt

Delphi-Quellcode:
procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
  '*.*'; Recurse: Boolean = True);

--> hmm wenn ich jetzt zwei ordner reinziehe?

HILFE ;) :spin:

Luckie 9. Okt 2004 13:52

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
Och manno, denk doch mal selber etwas nach.

Nicodius 9. Okt 2004 13:59

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
--> ich versteh nicht wie ich das in meinem code umsetze .... übrigens du bist um 15 jahre älter
du hast mehr erfahrung etc du kannst mich nicht mit dir vergleichen ;)

hmmm ... schnell mal nen spruch von nem Dp-User

Zitat:

die intelligenz folgte mir doch ich war schneller


ich weiß nicht wie ich das jetz tmachen soll ... mein code:




Delphi-Quellcode:
procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
  '*.*'; Recurse: Boolean = True);

var
  SR: TSearchRec;
begin
  if AnsiLastChar(RootFolder)^ <> '\' then
    RootFolder := RootFolder + '\';
  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if SR.Attr and faDirectory <> faDirectory then
      begin
          // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //       RootFolder + SR.Name
        FileList.Add(RootFolder + SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;

Delphi-Quellcode:
procedure TForm1.WMDROPFILE(var msg: TMessage);
var LCount, Lanzahl, Lsize: integer;
  LDateiname: PChar;
begin
  LDateiname := '';
  Lanzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, LDateiname, 255);
  for LCount := 0 to (Lanzahl - 1) do
  begin
    Lsize := DragQueryFile(Msg.WParam, LCount, nil, 0) + 1;
    LDateiname := StrAlloc(Lsize);
    DragQueryFile(Msg.WParam, LCount, LDateiname, Lsize);
    if (ExtractFileExt(lowercase(string(LDateiname))) = '.ico') or (ExtractFileExt(lowercase(string(LDateiname))) = '.bmp') or (ExtractFileExt(lowercase(string(LDateiname))) = '.jpg') or (ExtractFileExt(lowercase(string(LDateiname))) = '.jpeg') then
      Listbox1.Items.add((string(LDateiname)));
    StrDispose(LDateiname);
  end;
//  FDropProc(LFileList);
  DragFinish(Msg.WParam);
  {   If (ExtractFileExt(lowercase(String(fname))) = '.bmp') or (ExtractFileExt(lowercase(String(fname))) = '.jpg') or (ExtractFileExt(lowercase(String(fname))) = '.jpeg') then
     Listbox1.Items.add((String(fName)));}
end;

und was dann?

Luckie 9. Okt 2004 14:11

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
Na da, wo du nach dem Ziehen deine Odner zur Verfügung hast, rufst du FindAllFiles eben auf und zwar so oft, wie du Ordner hast. Das hasst du doch schon alles mit den Dateien gemacht, nur dass du da eben Listbox1.Add() geschrieben hast. Ist es denn jetzt so schwer da FiindAllFiles hinzuschreiben?

Nicodius 9. Okt 2004 14:19

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
ja aber wie finde ich denn heraus wieviele ordner reingezogen werden?

Nicodius 9. Okt 2004 19:04

Re: Mehrere Dateien vom Explorer per Drag & Drop in List
 
mein Quelltext


Delphi-Quellcode:
procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
  '*.*'; Recurse: Boolean = True);
var
  SR: TSearchRec;
begin
  if AnsiLastChar(RootFolder)^ <> '\' then
    RootFolder := RootFolder + '\';
  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if SR.Attr and faDirectory <> faDirectory then
      begin
       // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //   RootFolder + SR.Name
        FileList.Add(RootFolder + SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;
Delphi-Quellcode:
procedure TForm1.WMDROPFILE(var msg: TMessage);
var LCount, Lanzahl, Lsize: integer;
  LDateiname: PChar;
begin
  LDateiname := '';
  Lanzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, LDateiname, 255);
  for LCount := 0 to (Lanzahl - 1) do
  begin
    Lsize := DragQueryFile(Msg.WParam, LCount, nil, 0) + 1;
    LDateiname := StrAlloc(Lsize);
    DragQueryFile(Msg.WParam, LCount, LDateiname, Lsize);
    If (ExtractFileExt(lowercase(String(Ldateiname))) = '.ico') or
       (ExtractFileExt(lowercase(String(Ldateiname))) = '.bmp') or
       (ExtractFileExt(lowercase(String(Ldateiname))) = '.jpg') or
       (ExtractFileExt(lowercase(String(Ldateiname))) = '.jpeg') then
    Listbox1.Items.add(String(Ldateiname));
// do Something with "LDateiname"
    StrDispose(LDateiname);
  end;
 // FDropProc(LFileList);
  DragFinish(Msg.WParam);
end;
und wo muss jetzt was rein? :cry: ich hasse meinen Stil ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz