Jak wykryć czy na program jest upuszczony Plik czy Katalog?

0

Witajcie,

Mam formę z D&D zrobioną przy pomocy tego tutoriala:
Drag and drop - przeciąganie plików

Potrzebowałem też wykrywać czy upuszczony obiekt jest katalogiem czy może plikiem, jak myślałem znakomicie do tego nadała się taka funkcja:

if ExtractFileExt(FileName) = '' then
        ShowMessage('To jest plik, ma rozszerzenie')

Niestety okazało się że jak katalog w nazwie ma kropkę to też jest wykrywany jako plik. Czy znacie inną metodę?

1

Na chłopski rozum:

if DirectoryExists(FileName) Then
 Typ := Katalog Else
if FileExists(FileName) Then
 Typ := Plik Else
 DoBluescreen();

;)

0

marcel.slip: tak jak pisze Patryk27. Ja robiłem to tak i jest to wystarczające dla plików:

procedure TListBox.WMDropFiles(var Msg : TWMDropFiles);
var
  hDrop : THandle;
  I, FileCount, FileNameLength : integer;
  FileName : string;
begin
  hDrop := Msg.Drop;
  try
    FileCount := DragQueryFile(hDrop, $FFFFFFFF, nil, 0);
    for I := 0 to FileCount - 1 do
    begin
      FileNameLength := DragQueryFile(hDrop, I, nil, 0);
      SetLength(FileName, FileNameLength);
      DragQueryFile(hDrop, I, PChar(FileName), FileNameLength + 1);
      if not DirectoryExists(FileName) then
      begin
        Self.Items.Add(FileName);
      end;
    end;
  finally
    DragFinish(hDrop);
  end;
end;
0

Wielkie dzięki panowie wszystko ładnie działa temat do zamknięcia:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1