Seite 1 von 1
Pathrequester unter Windows ME
Verfasst: 25.03.2008 22:49
von stalky13
Hi leute...
ich hab folgendes problem unter Windows ME (bei XP funzts), nach einem aufruf von Pathrequester() funzt die function CreateFile() ned mer
Code: Alles auswählen
Debug PathRequester("Daten speichern in:", "C:\")
If CreateFile(0,"test.txt")
WriteStringN(0,"Test")
CloseFile(0)
Debug "Datei erstellt"
Else
Debug "Fehler"
EndIf
es wird keine Datei erstellt trozdem bekomme ich ein handel von createfile und ich bekomme auch keinen fehler oder so blos die datei wird nicht erstellt ... kommentiert man den Pathrequester aus dann funzt es wieder

vieleicht kann man ja einen pathrequester oder sowas ähnliches über api aufrufen ich hab aber in der msdn unter Common Dialog Box Library nüx gefunden

gibts den inner api? oda muss ich mir selbst was baun?
Verfasst: 25.03.2008 23:26
von ts-soft
Code: Alles auswählen
Procedure BrowseCallbackProc(hwnd, msg, lParam, lData)
szDir.s = Space(#MAX_PATH)
Select msg
Case #BFFM_INITIALIZED
SendMessage_(hwnd, #BFFM_SETSELECTION, #BFFM_INITIALIZED, lData)
Case #BFFM_SELCHANGED
If SHGetPathFromIDList_(lParam, @szDir)
SendMessage_(hwnd, #BFFM_SETSTATUSTEXT, 0, @szDir)
EndIf
EndSelect
EndProcedure
Procedure.s BrowseForFolder(Style, Titel.s, Path.s)
Folder.s = Space(#MAX_PATH)
Dir.BROWSEINFO
Dir\hwndOwner = GetActiveWindow_()
Dir\pszDisplayName = @Folder
Dir\lpszTitle = @Titel
Dir\ulFlags = Style
Dir\lpfn = @BrowseCallbackProc()
Dir\lParam = @Path
CoInitialize_(#Null)
result.l = SHBrowseForFolder_(@Dir)
SHGetPathFromIDList_(result, @Folder)
If Folder <> ""
If FileSize(Folder) = - 2
If Right(Folder, 1) <> "\" : Folder + "\" : EndIf
EndIf
EndIf
CoTaskMemFree_(result)
ProcedureReturn Folder
EndProcedure
Den Rest sollteste in der MSDN oder PSDK finden
Gruß
Thomas
Verfasst: 26.03.2008 14:42
von AND51
Nur eine Idee, aber füge in deinem Code doch mal am Anfang und am ende folgende Befehle ein
Code: Alles auswählen
Debug GetPathPart(ProgramFilename())
Debug GetCurrentDirectory()
und schaue dort mal nach. Wenn die Datei korrekt erstellt wird (Handle wird zurückgegeben), dann muss sie ja schließlich auch irgendwo sein. Ansonsten bemüh doch mal die Suchfunktion. Wenn das alles nichts hilft, weiß ich es auch nicht.
Verfasst: 26.03.2008 15:00
von NicTheQuick
Die Datei wird wahrscheinlich im Compiler-Verzeichnis erstellt. Dort musst du
nach ihr suchen.
Verfasst: 26.03.2008 16:48
von AND51
Dann dürfte das mit GetCurrentDirectory() ans Tageslicht kommen.
Hatte auch mal einen Fall, bei dem ich mich wunderte, warum eine Datei nicht im Projektverzeichnis angelegt wurde. Erstellt wurde sie, aber wo?
Das hatte ich auch dann mit GetCurrentDirectory() rausgefunden.
Verfasst: 26.03.2008 18:28
von stalky13
Hi danke für eure antworten
also ich hab mal das arbeitsverzeichnis überprüft vor und nach dem aufruf von pathrequester ... offenbar wird das verzeichnis nach C:\WINDOWS\Temporary Internetfiles\ geändert ...

warum auch immer... scheint aber nicht an dem patrequester von pb zu ligen weil es leider mit dem von ts-soft auch ned funzt ... trotzdem besten dank für deinen code, ist ein gutes beispiel für einen eigenen pathrequester der vorteil ist mann kann flags übermittel um z.B. nach computern oder druckern zu suchen

die flags findet man
hier
ich ändere jetzt ganz einfach nach jedem pathrequester das arbeitsverzeichnis mit setcurrentdirectory
thx für eure hilfe mfg stalky
Verfasst: 26.03.2008 18:34
von H.Brill
Also ich würde auf jeden Fall das PathRequester()
auch auswerten, z. B. so :
So funktioniert es jedenfalls bei mir.
Code: Alles auswählen
Pfad.s = PathRequester("Daten speichern in:", "C:\")
If Pfad <> ""
If CreateFile(0, Pfad + "test.txt")
WriteStringN(0,"Test")
CloseFile(0)
Debug "Datei erstellt"
Else
Debug "Fehler"
EndIf
Else
Debug "Kein Pfad gewählt !"
EndIf
End