Getfilelist

Previous topic - Next topic

HeikoJ

Hallo,

ich habe folgenden Code :

Code (glbasic) Select
FUNCTION LoadGame:
  LOCAL anz
  LOCAL feld$[]

  SETFONT 3

  anz = GETFILELIST("sav\\*.sav", feld$[])

  PRINT "gefunden : " + anz, 20,20
  SHOWSCREEN
  MOUSEWAIT

ENDFUNCTION
Wenn ich es jetzt übersetze kommt folgende Fehlerausschrift :

compiling:
C:/DOCUME~1/jonsc00h/LOCALS~1/Temp/glbasic/gpc_temp8.cpp: In function `DGInt __GLBASIC__::LoadGame()':
C:/DOCUME~1/jonsc00h/LOCALS~1/Temp/glbasic/gpc_temp8.cpp:198: error: `feld$' undeclared (first use this function)
C:/DOCUME~1/jonsc00h/LOCALS~1/Temp/glbasic/gpc_temp8.cpp:198: error: (Each undeclared identifier is reported only once for each function it appears in.)
C:/DOCUME~1/jonsc00h/LOCALS~1/Temp/glbasic/gpc_temp8.cpp:198: error: expected primary-expression before ']' token
*** FATAL ERROR - Bitte die Compiler-Ausgabe ins Forum kopieren

Was habe ich falsch gemacht ??

Danke und Gruß Heiko

PS: Meine GLBasic Version ist 4.237

Kitty Hello

Statt "\\" immer "/" verwenden für Unterordner. Ich bin mir nicht sicher, ob das bei GetFileList so geht, oder ob Du mit SETCURRENTDIR() arbeiten musst.
Ist schon lang' her ;)

Schranz0r

also ich mach sowas mit SETCURRENTDIR() !

dann brauchst du nurnoch so machen:

Code (glbasic) Select
FUNCTION LoadGame:
  LOCAL anz
  LOCAL feld$[]

  SETFONT 3

  anz = GETFILELIST("*.sav", feld$[])

  PRINT "gefunden : " + anz, 20,20
  SHOWSCREEN
  MOUSEWAIT

ENDFUNCTION
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

HeikoJ

Hallo Gernot,

danke genau das war der Fehler , mit den "//" geht es jetzt.
Da war die Compilerauschrift aber arg verwirrent.

Danke und Gruß Heiko

HeikoJ

Hallo,

wenn ich jetzt folgendes mache:

anz = GETFILELIST("*.sav", feld$[])

dann stehen in feld$[] nicht nur die Dateien drin, sondern auch Verzeichnisse und "." + ".."

Wie bekomme ich jetzt wirlklich nur die Dateien raus, ohne Verzeichnisse ??
Stehen die Verzeichnisse IMMER an erster Stelle ??
Wenn ja kann man diese dann überspringen.

Gruß Heiko

Kitty Hello

Schau doch mal in die Hilfe :D
Code (glbasic) Select
anz = ein kodierter Wert:
anz_ordner = INTEGER(anz/0x10000)
anz_dateien=MOD(anz, 0x10000)
also - hohes WORD (2 byte) für anzahl der Ordner, niedriges WORD für Anzahl der Dateien.
Die Ordner kommen im feld zuerst.
Will man die Ordner rauswerfen, macht man:
Code (glbasic) Select
FOR i=1 TO INTEGER(anz/0x10000)
    DIMDEL feld$[], 0
NEXT

anz = LEN(feld$[])
Du wirfst also anz_ordner mal den ersten Eintrag raus, die unteren rutschen nach.

HeikoJ

Hallo Gernot,

die Vorgehensweise war mir schon klar.

Aber :

- warum kommen die Verzeichnisse mit, wenn ich als Maske "*.sav" angebe
- stehen die Verzeichnisse IMMER an ertser Stelle

Gruß Heiko

Kitty Hello

Alle Verzeichnisse, immer. Verzeichnisse immer oben. Ja.

Schranz0r

nimm den String in dem Array und "delete" die Currentdir raus...
So habs ich glaub mal gemacht!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard