Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 17:40
Moin Marcasso,

Zitat von Marcasso:
danke für den tipp mit der schreibweise von mp3^^ hätte ich übersehen,
wieso hätte?
Die hast Du schon wieder nicht berücksichtigt

Wenn ich das richtig sehe, fabrizierst Du auch noch, je Dateiname der nicht als gültig anerkannt wird, auch noch ein Speicherloch, da Du StrDispose nur bei gültiger Datei aufrufst.

[EDIT]
Warum brichst Du eigentlich die Verarbeitung ab, wenn die Endung mal nicht .mp3 ist?
Lass' die Datei doch einfach aus, dann muss der Anwender sich nicht darum kümmern gezielt entsprechende Dateien zu markieren, was bei Standardinstallation von Windows (ausblenden von registrierten Dateiendungen) unter Umständen gar nicht so einfach ist.
[/EDIT]

[EDIT2]
Das DragFinish gehört auch nicht in die Schleife, denn sonst gibst Du bei der ersten gültigen Datei den vom System reservierten Speicher wieder frei.

So würde ich es machen (auch ohne die, inzwischen unüblichen StrAlloc, StrPas, StrDispose):

Delphi-Quellcode:
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
  try
    Dateiname := AllocMem(Size);
    try
      if LowerCase(ExtractFileExt(Dateiname)) = '.mp3then begin
        DragQueryFile(Msg.WParam,i , Dateiname, size);
        ListA.items.add(Dateiname);
        ListB.Clear;
        for j := 0 to listA.Items.Count - 1 do
          ListB.Items.Add(inttostr(j+1)+'. '+extractfilename(lista.Items[j]));
      end;
    finally
      FreeMem(Dateiname,Size);
    end;
  finally
    DragFinish(Msg.WParam);
  end;
[/EDIT2]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat