AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TDirectory.GetFiles EInvalidePointer wenn Path leer
Thema durchsuchen
Ansicht
Themen-Optionen

TDirectory.GetFiles EInvalidePointer wenn Path leer

Ein Thema von Kostas · begonnen am 10. Jul 2017 · letzter Beitrag vom 10. Jul 2017
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TDirectory.GetFiles EInvalidePointer wenn Path leer

  Alt 10. Jul 2017, 12:51
Hallo Zusammen,

wenn im Pfad keine gesuchte Dateien vorhanden sind, wird eine Exception vom Typ EInvalidePointer "Ungültige Zeigeroperation" gefeuert.
Ist mindestens eine gesuchte Datei vorhanden gibt es keine Exception.
Hat jemand eine Idee warum?


Delphi-Quellcode:

if not GetDirFilesEx(QuellPfad, '*.pdf', MyFileList, TSearchOption.soTopDirectoryOnly, false)then exit;

function GetDirFilesEx(const StartDir,
                       SearchPattern: string;
                       out MyFileList : TStringList;
                       SearchOption:TSearchOption;
                       FileNameOnly:Boolean):Boolean;
var
  LList: TStringDynArray;
  I: Integer;
  LSearchOption: TSearchOption;

begin
  result := False;

  LList := TDirectory.GetFiles(StartDir, SearchPattern, SearchOption);


  for i := 0 to Length(LList)-1 do
  begin
    if FileNameOnly
    then MyFileList.Add(ExtractFileName(LList[i]))
    else MyFileList.Add(LList[i]);
  end;

  Result := MyFileList.Count>0;

end;
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: TDirectory.GetFiles EInvalidePointer wenn Path leer

  Alt 10. Jul 2017, 12:59
Kann ich nicht nachvollziehen, der Code läuft mit den Beispielparametern von dir durch. Kannst du ein vollständiges Beispiel posten? Ist dein MyFileList ordentlich initialisiert?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TDirectory.GetFiles EInvalidePointer wenn Path leer

  Alt 10. Jul 2017, 13:04
Ist dein MyFileList ordentlich initialisiert?
Entweder der Kaffee wirkt nicht, oder ich vermisse auch sowas wie MyFileList := TStringList.Create;
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: TDirectory.GetFiles EInvalidePointer wenn Path leer

  Alt 10. Jul 2017, 13:09
Genau aus solchen Gründen sollte man es immer vermeiden Objekte innerhalb einer Funktion zu erzeugen. Besser außerhalb erzeugen, Funktion aufrufen und außerhalb wieder freigeben. Dann gibt es keine Fragen der Zuständigkeit:
Delphi-Quellcode:
List := TStringList.Create;
try
  GetDirFilesEx(.., List);
  ..
finally
  List.Free;
end;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TDirectory.GetFiles EInvalidePointer wenn Path leer

  Alt 10. Jul 2017, 13:14
Hallo Zusammen,

das Create ist vorhanden. Interessant ist, NUR wenn im QuellPfad keine PDFs vorhanden sind kommt die Exception ansonsten nicht!
Die Ursache ist vermutlich eine andere. Ich werde weiter schauen. Danke für die Bestätigung.

Delphi-Quellcode:
     ...
     MyFileList:=TStringList.Create;
     try

        QuellPfad := IncludeTrailingBackslash(deQuelle.Text);
        if not GetDirFilesEx(QuellPfad, '*.pdf', MyFileList, TSearchOption.soTopDirectoryOnly, false)then exit;
        ...
     finally
        MyFileList.free;
     end;{try}
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: TDirectory.GetFiles EInvalidePointer wenn Path leer

  Alt 10. Jul 2017, 13:21
Dann setze beim Parametertyp der StringListe doch bitte das out weg, das ist missverständlich. Man erwartet eigentlich dass man einen nicht initialisierten Zeiger übergibt und der bei Erfolg mit einer gültigen TStringList-Instanz belegt ist.

Und du hast doch einen Debugger. Wo tritt die Exception denn genau auf?
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: TDirectory.GetFiles EInvalidePointer wenn Path leer

  Alt 10. Jul 2017, 13:36
Hallo Güther,

sorry die Function funkt einwandfrei. Der Fehler ist außerhalb.

Sorry dass ich es nicht gleich gesehen habe und Euch bemüht habe.
  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 19:50 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