Seite 1 von 2

Hat Pathrequester in V4.01 ein BUG ??

Verfasst: 22.11.2006 12:27
von Then
Habe diesen Code probiert, aber dabei stürtzt mir der Debugger immer ab. Bei der fertigen EXE kommt auch ein Ausnahmefehler... ist dat ein BUG ? War lange nicht mehr hier und habe evtl die Bugmeldung verpasst...

Code: Alles auswählen

OpenWindow(0,0,0,200,200,"test")
CreateGadgetList(WindowID(0))
ButtonGadget(1,10,10,100,100,"Ende")

verzeichni$=PathRequester("Bitte das zu bearbeitende Verzeichnis wählen. Sie können nach der Auswahl die Änderungen bestimmen !","C:\")
If verzeichni$=""
 MessageRequester("Vielen Dank","")
 End
EndIf
ExamineDirectory(0,verzeichni$,"")
Debug verzeichni$
Repeat
Delay(2)
 EventID.l=WindowEvent()
 If EventID=#PB_Event_Gadget
  Select EventGadget()
   Case 1 ; tausch
   End  
  EndSelect
 EndIf
ForEver
Bild

Verfasst: 22.11.2006 13:01
von #NULL
also bei mir gibt es keine probleme, läuft, ohne fehler ect.
was ist denn wenn du das delay() auskommentierst?
versuch es außerdem mal mit einem

Code: Alles auswählen

ExamineDirectory(0,verzeichni$,"")
Debug verzeichni$
FinishDirectory(0)
prüfe auch alle rückgabewerte, zumindest die von OpenWindow() und ExamineDirectory(). vielleicht ist die fehlermeldung auch von WindowEvent(). kam mir schon öfters vor, dass fehler an einer anderen/der vorherigen zeile aufgezeigt werden, als in der, in welcher sie entstehen.

Verfasst: 22.11.2006 14:13
von bobobo
die repeat forever schleife ist supoptimal

sowas

Code: Alles auswählen

...
Repeat 
 EventID.l=WaitWindowEvent() 
Until eventid=#PB_Event_CloseWindow
ist meist angebrachter .. das Programm wartet dann auf Ereignisse
im Fenster

Verfasst: 22.11.2006 15:08
von Then
Ja, waitWindow... ist schon klar, aber dann wartet er ja komplett, bis die Maus bewegt wird. Sogar die EXE schmiert ab....hm, ich raff das nicht ! Habe den Code in 3.9 auch getestet und da isset dat gleiche... ich werde mal weiter rumspielen, wenn ichs herausgefunden habe, dann melde ich das - sollte jeder so machen und nicht einfach nur schreiben "Gelöst !"

Dennoch danke !

Verfasst: 22.11.2006 16:49
von AND51
Willst du nur testen, ob ein verzeichnis exisiter? Dann nimm lieber FileSize().

du musst nämlich folgednes beachten: es gibt einige Elemente im PathRequester, die man auswählen kann und dann einen ungültigen pfad bekomme!

Beispiel: Klicke ich den Arbeitsplatz an und dann auf OK, erhalte ich einfach nur \als Pfad !!

Oder die eventuell vorhanden FTP-Server... Oder Wenn jemand Widcomm-Bluetooth auf dem Desktop installiert hat, welches dann ein im PathRequester anklickbares Icon hinterlässt...

Verfasst: 22.11.2006 17:03
von Kiffi
> Willst du nur testen, ob ein verzeichnis exisiter?

hast Du Dir den Code oben angeschaut?

Grüße ... Kiffi

Verfasst: 22.11.2006 19:42
von bobobo
Wir sammeln für ne Brille

Verfasst: 22.11.2006 19:57
von AND51
Überflüssiger Kommentar und das von einem Mod... /:-> Außerdem hab ich schon eine 8)

Ja, ich habe mir den Code angeschaut. Mir wird daraus nichts klar, also ich weiß auch nicht, warum ein ungültiger SPeicherzugriff erfolgt. Will er aber nur ein Verzeichnis examinen, um zu sehen ob es existiert, kann er ja FileSIze() nehmen.

Und trotzdem ist es keine abwegige Idee, das Verzeichnis mittels FileSize() vorher auf seine Gültigkeit zu prüfen!!!

Verfasst: 22.11.2006 21:16
von Kiffi
> Mir wird daraus nichts klar

dann sag ich nur: üben, üben, üben und immer schön die F1-Taste benutzen ;-)

Ich sehe da eindeutig, dass dem Anwender die Möglichkeit gegeben werden
soll, mittels PathRequester() ein Verzeichnis auszuwählen. Also nix mit
FileSize().

Grüße ... Kiffi

Verfasst: 23.11.2006 00:18
von AND51
Ich kann dir verbindlich versichern, dass ich die F1-Taste öfter benutze als du denkst!

Dann revidiere ich halt meine Aussage und sage: " (ot) Ey, ich geb dir nen Tipp! Prüf vor ExamineDirectory(), ob das gewählte Verzeichnis auch gültig ist! Es kann z. B ungültig sein, wenn ich im PathRequester() den ARbeitsplatz auswähle. (/ot)"

So besser?

_______________________________________________________


Ich kann nur sagen: Bei mir unter PB 4.01 läuft der Code astrein. Habe mit EnableExplicit getestet. An Delay(2) liegt es nicht, wieso auch? Ich weiß nicht wieso, aber mir springt das ExamineDirectory(0, ...) ins Auge. Probeir statt der ID 0 doch mal bitte eine andere ID bzw. #PB_Any!!