GLBasic forum

Other languages => GLBasic - de => Topic started by: HeikoJ on 2007-Sep-18

Title: Getfilelist
Post by: HeikoJ on 2007-Sep-18
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
Title: Getfilelist
Post by: Kitty Hello on 2007-Sep-18
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 ;)
Title: Getfilelist
Post by: Schranz0r on 2007-Sep-18
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
Title: Getfilelist
Post by: HeikoJ on 2007-Sep-18
Hallo Gernot,

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

Danke und Gruß Heiko
Title: Getfilelist
Post by: HeikoJ on 2007-Sep-19
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
Title: Getfilelist
Post by: Kitty Hello on 2007-Sep-19
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.
Title: Getfilelist
Post by: HeikoJ on 2007-Sep-19
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
Title: Getfilelist
Post by: Kitty Hello on 2007-Sep-19
Alle Verzeichnisse, immer. Verzeichnisse immer oben. Ja.
Title: Getfilelist
Post by: Schranz0r on 2007-Sep-19
nimm den String in dem Array und "delete" die Currentdir raus...
So habs ich glaub mal gemacht!