Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dateidialog richtig anwenden?!

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 18.06.2012, 22:58    Titel: Dateidialog richtig anwenden?! Antworten mit Zitat

Code:
'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


Ich habe einen Quellcode gefunden den ich noch nicht ganz verstehe.

Er öffnet den Dialog und ich kann den Namen angeben. Aber wo muss ich die entsprechende Zeile reinschreiben dass der mir eine Datei öffnet bzw. den Inhalt der Datei einliest? Die beiligende Beschreibung ist nicht besonders hilfreich. Reicht der übliche Openbefehl zum einlesen von Daten einer Datei oder wird noch ein wenig mehr benötigt? Stehe momentan etwas auf dem Schlauch!!! Wäre schön, wenn einer sowas schon mal programmiert hat und mir sagen kann wie es geht.

Edit: Ich glaube ich habe es selber hinbekommen? Könnt aber trotzdem Antworten!

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 18.06.2012, 23:41    Titel: Antworten mit Zitat

Die Funktion liefert dir einen Dateinamen.
Den du ausdrucken oder vergessen kannst. Du kannst natürlich auch open nutzen um die Datei zu öffnen.

Wo war da jetzt die Frage...?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 19.06.2012, 00:10    Titel: Antworten mit Zitat

Zitat:
Zitat von 28398:
Wo war da jetzt die Frage...?

Die Frage hat sich erledigt, da ich das ganze durch Zufall selber lösen konnte.

Code:

DateiName = LoadSaveDialog (1,fil,1,,"TXT")

F = FREEFILE
OPEN DateiName FOR OUTPUT AS #F
PRINT #F, EINS, ZWEI, DREI
CLOSE #F


Der obige Code macht genau das was ich will. Ich brauche nur den Openbefehl nach dem Dialogaufruf hinschreiben und den eingegebenen Namen bei dem Openbefehl mit angeben. Mir war das am Anfang nicht so ganz klar. Durch rumexperimentieren habe ich es dann doch selber lösen können.

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05


Zuletzt bearbeitet von ALWIM am 19.06.2012, 00:13, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz