Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Dateien und Laufwerke

Dialog zum öffnen oder speichern einer Datei

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.MitgliedEternal_Pain 14.06.2007

Quelle:fb@rchive
Author:Volta

Window-Dialog zum Öffnen oder Speichern einer Datei im Konsolenfenster.
Ich hoffe, das Listing erklärt sich durch die Kommentare selbst.
(läuft auch unter fb0.17b)

'03/13/06 - FB 0.15b - WIN32 console application - by Volta
'Nutzt den komfortablen Window-Dialog zur Auswahl des Laufwerk/Pfad/Dateinamens
'zum öffnen oder speichern einer Datei in Consolenanwendungen

#INCLUDE ONCE "WINDOWS.BI"
#Include Once "win\COMMDLG.BI"

Declare Function LoadSaveDialog (_
           savedlog As Integer = 0,_
           filter As String = "",_
           fltrindex As Integer = 1,_
           initdir As String = "",_
           strDefExt As String = "") As String
'Voreinstellungen:
'savedlog = 0 "Datei Öffnen", 1(<>0) "Datei Speichern"
'filter = "" "Alle Dateien", sonst siehe fil
'fltrindex = 1,  sonst welcher Eintrag, der bei filter angegebenen Auswahl, aktiv ist
'initdir = "" = "." aktueller Pfad, sonst angegebener Pfad
'strDefExt = "" keine Vorgabe, sonst z.B. "bak" als Vorgabe der Endung zum Speichern

Dim As String DateiName, fil
fil = "Basic Dateien (*.BAS)" + Chr(0) + "*.BAS" + Chr(0) _
    + "Text Dateien (*.TXT)" + Chr(0) + "*.TXT" + Chr(0)_
    + "Bild Dateien (*.BMP)" + Chr(0) + "*.BMP" + Chr(0)_
    + "EXE Dateien (*.EXE)" + Chr(0) + "*.EXE" + Chr(0)_
    + "Alle Dateien (*.*)" + Chr(0) + "*.*" + Chr(0, 0)

'Beispiele:
'einfachster Aufruf "Datei Öffnen", alle Vorgaben werden übernommen.
'DateiName = LoadSaveDialog

'Aufruf "Datei Öffnen" mit Filter, alle anderen Vorgaben werden übernommen.
'DateiName = LoadSaveDialog (,fil)

'Aufruf "Datei Öffnen" mit Filter Index 2 (TXT), alle anderen Vorgaben werden übernommen.
'DateiName = LoadSaveDialog (,fil,2)

'Aufruf "Datei Öffnen" im Pfad "c:\", alle anderen Vorgaben werden übernommen.
DateiName = LoadSaveDialog (,,,"c:\")

'Aufruf "Datei Speichern", alle Vorgaben werden übernommen.
'DateiName = LoadSaveDialog (1)

'Aufruf "Datei Speichern" wenn keine Dateiendung angegeben wird, "bak" als
'Endung benutzen, alle anderen Vorgaben werden übernommen.
'DateiName = LoadSaveDialog (1,,,,"bak")

Print DateiName
Print "Verdisch.."
Sleep
End

Function LoadSaveDialog (savedlog As Integer, filter As String, fltrindex As Integer,_
                         initdir As String, strDefExt As String) As String
  Dim FB_OFN AS OPENFILENAME
   FB_OFN.lStructSize = Len(FB_OFN)
   FB_OFN.hwndOwner = 0 ' nur Console
   FB_OFN.hInstance = 0

   Dim strFilter As String
   If filter = "" Then
      strFilter = "Alle Dateien (*.*)" + Chr(0) +"*.*" + Chr(0, 0) 'Vorgabe
   Else
      strFilter = filter + Chr(0, 0)
   End If
   FB_OFN.lpstrFilter = StrPtr(strFilter)
   FB_OFN.nFilterIndex = fltrindex

   Dim strFile As String *2048
   strFile = Space(2047) + Chr(0)
   FB_OFN.lpstrFile = StrPtr(strFile)
   FB_OFN.nMaxFile = Len(strFile)

   Dim strFileTitle As String *2048
   strFileTitle = String(2048, 0)
   FB_OFN.lpstrFileTitle = StrPtr(strFileTitle)
   FB_OFN.nMaxFileTitle = Len(strFileTitle)

   Dim strdrstr As String
   If initdir = "" Then
      strdrstr = "."     ' Vorgabe aktueller Pfad
   Else
      strdrstr = initdir
   End If
   FB_OFN.lpstrInitialDir = StrPtr(strdrstr)

   Dim strcapt As String
   If savedlog Then
      strcapt = "Dateien Speichern"
      FB_OFN.lpstrTitle = StrPtr(strcapt)
      If strDefExt > "" Then
         Dim strdext As String
         strdext = strDefExt
         FB_OFN.lpstrDefExt = StrPtr(strdext)
      End If
      FB_OFN.flags = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_OVERWRITEPROMPT Or OFN_HIDEREADONLY
      If GetSaveFileName(@FB_OFN) Then LoadSaveDialog = Trim(strFile)
   Else
      strcapt = "Dateien Öffnen"
      FB_OFN.lpstrTitle = StrPtr(strcapt)
      FB_OFN.flags = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_CREATEPROMPT Or _
                     OFN_NODEREFERENCELINKS Or OFN_HIDEREADONLY
      If GetOpenFileName(@FB_OFN) Then LoadSaveDialog = Trim(strFile)
   End If
End Function

Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 13.06.2007 von MitgliedEternal_Pain angelegt.
  • Die aktuellste Version wurde am 14.06.2007 von MitgliedEternal_Pain gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen