AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit ExtractFileName

Ein Thema von Cyberbob · begonnen am 29. Mär 2006 · letzter Beitrag vom 29. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#1

Probleme mit ExtractFileName

  Alt 29. Mär 2006, 00:29
Hallo DPler,

ich habe eine kleines Problem mit dem Befehl ExtractFileName

Ich habe ein Dynamisches Array of TFileName (es heisst FileNames). Wenn ich mir nun den Ersten Buchstaben des Dateinamen anzeigen lassen will, benutze ich ExtractFileName(FileNames[i][1]) was auch Funktioniert
Nun mein problem. Wenn ich den ersten Buchstaben des 1. Feldes mit dem des 2. Feldes vergleichen will, erhalte ich eine AV. Dies mache ich so:

Delphi-Quellcode:
if ExtractFileName(FileNames[i])[1] < ExtractFileName(FileNames[i+1])[1] then
begin
  Bla... Blub...
end; {if}
Warum weigert sich ExtractFileName hier?
Christian
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 00:53
Ich nehme mal stark an, dass das in einer For-Schleife passiert, und dass dein letzter Durchgang für High(Filenames) ist gell? Und dann rechnest du i+1 als Index, wobei i im letzten Durchgang ja schon gleich High(Filenames) ist
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 00:55
Ich hab "for i := 0 to Length(FileNames) - 2 do" benutzt
es wird direct beim ersten durchgang eine AV ausgelöst, auch wenn ich 10 elemente ich Array hab
Christian
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 01:04
Moin moin,

dann wird es am Inhalt liegen. Prüfe doch mal die Länge von FileNames[x]?!
Delphi-Quellcode:
var s: string;
begin
   s := '';
   // Hier gibts ne AV, da s = ''
   ShowMessage(s[1]);
end;
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 01:06
Bin ich einfach nur blind oder stimmt da was nicht in deinem Code:
Delphi-Quellcode:
ExtractFileName(FileNames[i][1])
// wie will den das gehen?!
// Bie einem Pfad (z.B. C:\Test\Test.txt) bekommst du hier den Character "C" heraus, wenn ich mich nicht täusche!
// Schau mal an wo die Klammer ist!

if ExtractFileName(FileNames[i])[1] < ExtractFileName(FileNames[i+1])[1] then
begin
  Bla... Blub...
end; {if}
// Hier müsste es eventuell klappen, nur würde ich vorher die einzelnen Filenames in separate Strings abspeichern
// Also so:

s1 := ExtractFileName(FileNames[i]);
s2 := ExtractFileName(FileNames[i+1]);
if s1[1] < s2[1] then
begin
  Bla... Blub...
end; {if}
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 01:10
auch das wird nicht klappen, wenn FileNames[x] leer ist...
Test:
Delphi-Quellcode:
var s1, s2: string;
begin
   s1 := ExtractFileName('');
   s2 := ExtractFileName('');
   if s1[1] < s2[1] then
     ShowMessage('AV');
end;
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 01:16
Sorry, hast recht! Ist halt schon etwas spät

aber das hier müsste doch zu 100% funktionieren:
Delphi-Quellcode:
var
  s1, s2 : String;
begin
  s1 := ExtractFileName(FileNames[i]);
  s2 := ExtractFileName(FileNames[i+1]);
  if (length(s1) > 0) and (length(s2) > 0) then
  begin
    if s1[1] < s2[1] then
    begin
      //Bla... Blub...
    end;
  end
  else
    // Kein gültiger Dateipfad
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 01:33
Ich hab folgenden Code im Quelltext stehen!

Delphi-Quellcode:
procedure TfrmPlayer.btnSortClick(Sender: TObject);
var
  z : LongInt;
  Speicher : TFileName;
  Changed : Boolean;
begin
  Repeat
    Changed := False;
    For z := 0 To Length(FileNames) - 2 do
    begin
      if ExtractFileName(FileNames[z])[1] > ExtractFileName(FileNames[z+1])[1] then
      begin
        Speicher := FileNames[z];
        FileNames[z] := FileNames[z+1];
        FileNames[z+1] := Speicher;
        Changed := True;
      end;
    end;
  Until Changed = False;

  lbxFiles.Clear;
  For z := 0 To Length(FileNames) - 1 do
    lbxFiles.Items.Add(ExtractFileName(FileNames[z]));
end;
Ich habs in einem anderen Projekt auch schon so gelöst und erhalte plötzlich überall diese Meldungen. Früher gings mal!
Christian
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 01:53
Laut s.h.a.r.k:
Delphi-Quellcode:
procedure TfrmPlayer.btnSortClick(Sender: TObject);
var
  z : LongInt;
  Speicher : TFileName;
  Changed : Boolean;
  s1, s2 : String;
begin
  Repeat
    Changed := False;
    For z := 0 To Length(FileNames) - 2 do
    begin
      s1 := ExtractFileName(FileNames[z]);
      s2 := ExtractFileName(FileNames[z+1]);
      if (length(s1) > 0) and (length(s2) > 0) then
        if s1[1] > s2[1] then
        begin
          Speicher := FileNames[z];
          FileNames[z] := FileNames[z+1];
          FileNames[z+1] := Speicher;
          Changed := True;
        end;
    end;
  Until Changed = False;

  lbxFiles.Clear;
  For z := 0 To Length(FileNames) - 1 do
    lbxFiles.Items.Add(ExtractFileName(FileNames[z]));
end;
Zitat:
Ich habs in einem anderen Projekt auch schon so gelöst und erhalte plötzlich überall diese Meldungen. Früher gings mal!
Es ist ja nix falsches daran, wenn du sicherstellst, dass FileNames[z] auch einen String mit mind. 1 Zeichen enthält. Evtl. ist/war in deinem anderen Projekt FileNames[z] auch immer gefüllt...

EDIT: wegen übermüdung gelöscht
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#10

Re: Probleme mit ExtractFileName

  Alt 29. Mär 2006, 02:08
****Endlosschleife hat sich ja erledigt*****



Die Elemente des Arrays sind gefüllt. Das Programm füllt die sich selbst und da wird auf Leerstrings geachtet und diese dann ausgelassen. (Habs auch mal mit ShowMessage kontrolliert)

EDIT: Hab jetzt Delphi deinstalliert (auch die ganzen packages und den delphi6-ordner gelöscht), habs anschließend neu installiert und siehe da ... es geht. werd jetzt nochmal nach und nach die neuen versionen aller packages neu installieren und schaun, was passiert.
Christian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:42 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