AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

drag and drop filter funktioniert nicht

Ein Thema von Marcasso · begonnen am 18. Jan 2007 · letzter Beitrag vom 18. Jan 2007
Antwort Antwort
Marcasso

Registriert seit: 16. Sep 2006
39 Beiträge
 
#1

drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 15:30
hallo ich habe in die drag and drogp procedure etwas hinzugefügt, dass nur mp3 files zusallen soll,
leider funktioniert dies nicht /:

Delphi-Quellcode:
procedure TForm2.WMDROPFILES (var Msg: TMessage);
var i, j, anzahl, size: integer;
  Dateiname: PChar;
begin
  inherited;
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
      for i := 0 to (anzahl - 1) do
        begin
          size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
          Dateiname:= StrAlloc(size);
          if not(copy(Dateiname,0,length(Dateiname)-4) = '.mp3') then
            begin
              showmessage('nur mp3 files');
              exit;
            end
          else
            begin
              DragQueryFile(Msg.WParam,i , Dateiname, size);
              ListA.items.add(StrPas(Dateiname));
              StrDispose(Dateiname);
              DragFinish(Msg.WParam);
              ListB.Clear;
            for j := 0 to listA.Items.Count - 1 do
              ListB.Items.Add(inttostr(j+1)+'. '+extractfilename(lista.Items[j]));
            end;
      end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 16:00
die Parameter der Funktion copy stimmen nicht. Schau dir am besten mal in der Hilfe an welche Parameter erwartet werden. Zudem solltest du bedenken das es nicht nur die Endung ".mp3" sondern auch ".Mp3", ".MP3" etc. gibt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Marcasso

Registriert seit: 16. Sep 2006
39 Beiträge
 
#3

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 16:48
danke für den tipp mit der schreibweise von mp3^^ hätte ich übersehen,
aber leider habe ich in der delphi hilfe nichts gefunden zu copy
aber habe in andreren threads geschaut und konnte jetzt meinen fehler nicht finden, was soll denn daran falsch sein?
lg
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 16:54
Schau Dir mal ExtractFileExt an damit sollte es einfacher gehn.
Blackheart
  Mit Zitat antworten Zitat
Marcasso

Registriert seit: 16. Sep 2006
39 Beiträge
 
#5

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 17:30
ich habe mit jetzt ExtractFileExt angeschaut

Delphi-Quellcode:
procedure TForm2.WMDROPFILES (var Msg: TMessage);
var i, j, anzahl, size: integer;
  Dateiname: PChar;
begin
  inherited;
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
      for i := 0 to (anzahl - 1) do
        begin
          size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
          Dateiname:= StrAlloc(size);
          if ExtractFileExt(StrPas(Dateiname)) = '.mp3then
            begin
              DragQueryFile(Msg.WParam,i , Dateiname, size);
              ListA.items.add(StrPas(Dateiname));
              StrDispose(Dateiname);
              DragFinish(Msg.WParam);
              ListB.Clear;
            for j := 0 to listA.Items.Count - 1 do
              ListB.Items.Add(inttostr(j+1)+'. '+extractfilename(lista.Items[j]));
            end
          else
           begin
              showmessage('nur mp3 files');
              exit;
            end;
      end;
end;
leider funktioniert es wieder nicht,
mache wohl etwas falsch
  Mit Zitat antworten Zitat
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
18. Jan 2007, 17:55
Dieses Thema wurde von "Christian Seehase" von "Multimedia" nach "Object-Pascal / Delphi-Language" verschoben.
Das eigentliche Problem ist eines mit der Sprache, als solcher
Marcasso

Registriert seit: 16. Sep 2006
39 Beiträge
 
#8

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 18:40
^wenn ich jetz egal welche files ziehe wird nichts der liste hinzugefügt /:

Delphi-Quellcode:
procedure TForm2.WMDROPFILES (var Msg: TMessage);
var i, j, anzahl, size: integer;
  Dateiname: PChar;
begin
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
    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;
  end;
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 18:50
Hallo,

Du verwendest ja auch DragQueryFile falsch. Ich habe mal den korrekten Quellcode kommentiert:
Delphi-Quellcode:
procedure TForm2.WMDROPFILES (var Msg: TMessage);
var
  i, anzahl, size: integer;
  Dateiname: PChar;
begin
  ListA.Clear;
  // Anzahl der Dateien ermitteln
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 255);
  // Alle Dateien durchlaufen
  for i := 0 to Anzahl - 1 do
  begin
    // Länge des aktuellen Dateinamens ermitteln
    Size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
    // Speicher allokieren
    Dateiname := StrAlloc(Size);
    try
      // Aktuellen Dateinamen ermitteln
      DragQueryFileMsg.WParam, i, Dateiname, Size);

      // Wenn MP3 -> in Liste einfügen
      if LowerCase(ExtractFileExt(Dateiname)) = '.mp3then
        ListA.items.add(Dateiname);
    finally
      // Speicher wieder freigeben
      StrDispose(FileName);
    end;
  end;

  // Dateien in andere Liste übertragen
  ListB.Clear;
  for i := 0 to listA.Items.Count - 1 do
    ListB.Items.Add(inttostr(i + 1)+'. ' + extractfilename(listA.Items[i]));
  end;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Marcasso

Registriert seit: 16. Sep 2006
39 Beiträge
 
#10

Re: drag and drop filter funktioniert nicht

  Alt 18. Jan 2007, 19:09
hey vielen vielen dank (:
den rest werde ich wohl mahcen können, danke
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:15 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