Einzelnen Beitrag anzeigen

Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#1

Konstantenobjekt kann nicht als VarParameter übergeben werde

  Alt 24. Nov 2007, 13:57
Hallo DP'ler

Ich nutze diesen Code um beim Drag&Drop die Dateien in eine Listbox zu übernehmen. Das Ganze will ich auch mit einem ordnermachen, d.h. der ordner wird gescannt und die Dateien so:llen eingefügt werden.
Delphi-Quellcode:
procedure FindAllFiles(var FileList: tstrings;RootFolder: string; Mask: string =
  BassDllPlayerFileFilter; Recurse: Boolean = True);
var
  SR: TSearchRec;
begin
  RootFolder := IncludeTrailingPathDelimiter(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;

procedure TfrmMain.WMDROPFILES(var Msg: TMessage);
var
  i, Counts, Size: Integer;
  PCharFileName: Pchar;
  Ordner: string;
begin
  inherited;
...
    If FileGetAttr(String(PCharFileName)) = faDirectory then
      begin
        Ordner := String(PcharFileName);
        FindAllFiles(frmMain.lsbPlaylist.Items,Ordner,BassDllPlayerFileFilter,TRUE);
      end
      else lsbPlaylist.Items.Add(String(PCharFileName));
    StrDispose(PCharFileName);
  end;
...
end;
Beim FindAllFiles sagt mir der Compiler aber:
Konstantenobjekt kann nicht als Var-Parameter übergeben werden

Wie kann ich das Problem lösen? Und wieso ist Ordner eine Konstante?
Jonas
  Mit Zitat antworten Zitat