' LINE-A freier Fileselect-aufruf!
' Die GFA-Befehle 'FILESELECT' und 'FILESELECT #' sind LINA-A behaftet!
'
' Bei dieser Funtion kann IMMER ein 'Kommentar' fr die FSEL bergeben
' werden. Ben”tigt wird noch die Function 'suche_cookie'!
> PROCEDURE fileselect(info$,msk$,set_ext|,VAR path$,file$,button|)
  ' Version 3.4 vom 23.03.1993 by Harald Ax (berarbeitet von Manfred Ssykor)
  ' info$    >| šberschrift, max. 30 Zeichen
  ' msk$     >| gewnschte Maske (incl. Extension)      (Standard: "*.*")
  ' set_ext| >| in msk$ definierte Extension an Dateiname anh„ngen:
  '             0: nicht; 1: immer; 2: nur, wenn keine eingegeben wurde
  ' path$    >|>Suchpfad ohne(!) Suchmaske
  ' file$    >|>reiner Dateiname. Der komplette Dateiname kann aus
  '             path$ + file$ zusammengesetzt werden.
  ' button|   |>0: ABBRUCH angeclickt; 1: OK angeclickt;
  '             2: OK angeclickt, aber kein Dateiname ausgew„hlt
  '
  ' >| = Input; |> = Output; >|> Input + Output
  '
  LOCAL pos&,fpath$,gem&
  '
  ' Vorarbeiten:
  info$=LEFT$(info$,30)                 !L„ngenbegrenzung šberschrift
  IF msk$=""
    msk$="*.*"                          !Standard-Suchmaske
  ENDIF
  msk$=UPPER$(msk$)
  ext$=MID$(msk$,RINSTR(msk$,".")+1)    !Extension aus msk$ herausfiltern
  set_ext|=ABS(set_ext|)                !Anpassen, falls jemand mit TRUE arbeitet
  path$=LEFT$(path$,RINSTR(path$,"\"))  !Zur Sicherheit, falls doch eine Extension bergeben wurde
  IF path$=""
    path$=home$                         !Standard-Suchpfad
  ENDIF
  '
  ' ---Die Betriebssystemroutine aufrufen:
  gem&=CARD{LONG{GB+4}}
  fpath$=path$+msk$+STRING$(131,0)      !Kpl. Pfad incl. Suchmaske
  info$=info$+CHR$(0)
  file$=file$+STRING$(21,0)             !Dateiname (Vorgabe)
  GCONTRL(1)=0
  GCONTRL(2)=2
  GCONTRL(4)=0
  ADDRIN(0)=V:fpath$                    !Pfad
  ADDRIN(1)=V:file$                     !Dateiname (Vorgabe)
  IF gem&>=&H140 OR @find_cookie("FSEL")
    GCONTRL(3)=3
    ADDRIN(2)=V:info$                   !Infozeile
    GEMSYS 91                           !FSEL_EXINPUT (AES 91) aufrufen
  ELSE
    GCONTRL(3)=2
    GEMSYS 90                           !FSEL_INPUT (AES 90) aufrufen
  ENDIF
  ' ---Auslesen
  button|=GINTOUT(1)                    !Ausgew„hlter Button: 0=ABBRUCH, 1=OK
  file$=CHAR{ADDRIN(1)}                 !Ausgew„hlter Dateiname
  fpath$=CHAR{ADDRIN(0)}                !Ausgew„hlter Pfad incl. Suchmaske
  '
  IF button|=1                          !OK angeclickt?
    ' -> fpath$ auftrennen in Pfad und Suchmaske
    pos&=RINSTR(fpath$,"\")             !Position des letzten "\"
    path$=LEFT$(fpath$,pos&)            !Suchpfad
    IF LEN(file$)>0                     !šberhaupt Dateiname angegeben?
      IF set_ext|>0                     !Evtl. ext$ anh„ngen
        pos&=RINSTR(file$,".")          !Position des letzten "."
        IF pos&=0                       !Kein "." im Dateiname vorhanden
          file$=file$+"."
          pos&=LEN(file$)               !pos& anpassen
        ENDIF
        IF set_ext|=1                   !ext$ unbedingt anh„ngen ->
          file$=LEFT$(file$,pos&)+ext$  !->Ausgew„hlte Extension abschneiden
        ENDIF
        ' Bis hierher wurde file$ so aufbereitet, daž auch bei set_ext|=2
        ' die Zwangs-Extension angeh„ngt werden kann.
        IF RIGHT$(file$)="."            !Dateiname ohne Extension?
          file$=file$+ext$              !Dateiname incl. Zwangs-Extensiom
        ENDIF
      ENDIF
      IF RIGHT$(file$)="."              !Evtl. Punkt bei Dateiname ohne Ext. abschneiden
        file$=LEFT$(file$,LEN(file$)-1)
      ENDIF
    ELSE                                !Kein Dateiname ausgew„hlt
      button|=2
      CLR file$
    ENDIF
  ENDIF
  '
  ~FRE(0)                               !Garbage-Collection
RETURN
