 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 18.06.2012, 22:58 Titel: Dateidialog richtig anwenden?! |
|
|
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 |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 18.06.2012, 23:41 Titel: |
|
|
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 |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 19.06.2012, 00:10 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|