fehler bei OpenFileRequester

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Nanü persepole,

ich war der Ansicht, dass Du schon in Richtung C[++|#] entschwunden
bist.

Na gut, hier noch ein Rat von einem -- wie hast Du das nochmal so schön
beschrieben? -- Klugscheisser:

Niemand hindert Dich, Deinen Bugreport im englischen Forum
vorzutragen. Dort liest Fred mit, der der Hautpprogrammierer von
PureBasic ist.

> Klar, für den Hobbyprogrammierer ist das Progrämmchen ja ganz
> schön, aber meine zweifel werden immer größer das sich PB als
> alternative zu richtigen Programmiersprachen nicht behaupten kann.
> Es hat den anschein das sich in diesem Forum doch so mancher
> überschätzt.

Take it or leave it. Aber tu mir den Gefallen und troll hier nicht rum!
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Aber tu mir den Gefallen und troll hier nicht rum!

...uns allen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

Na ja, persepole wird ein bisschen angesäuert sein, da dieses Problem
wirklich ziemlich nervig ist! Mir bleibt ja jetzt auch erst einmal keine Wahl als
mir einen openfilerequster mit API zu machen. Meine Englischkentnisse
reichen für einen detailierten Bugreport leider nicht aus. Aber dass es ein Bug
sein muss ist eigentlich klar! Komischerweise tritt der Fehler in den von mir
gepostetem Beispiel heute nicht auf! Aber auf einem anderen Computer
allerdings schon :shock: :freak:

Der Fehler scheint nur unter ganz bestimmten Voraussetzungen aufzutreten.
Und wenn das nur selten der Fall und schwer Nachvollziehbar ist, weiß ich
nicht wie groß das Interesse an einer Behebung sein wird. :cry:
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

aber wenn der fehler nur bei dem requester mit dem PB-befehl auftritt, und bei dem direkten API-aufruf nicht,
und der PB-befehl doch eigentlich (fast) nur ein API-wrapper ist,
dann kann der unterschied doch nicht so groß sein
und dann kann er doch nicht in SO viel code versteckt sein.
der bereich wo der Bug stecken kann müsste doch echt klein sein.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

Tach!

Jetzt habe ich mal probiert das Ganze mit API zu machen:

Code: Alles auswählen

OpenFilename.OPENFILENAME
OpenFilename\lStructSize = SizeOf(OPENFILENAME)



nocheinmal:

If GetOpenFileName_(OpenFilename)
  Delay(2)
  Goto nocheinmal
EndIf
Ergebnis: Nach den paar Zeilen schon das gleiche Problem! :(
Tja, da sitz ich ganz schön in der Sch...


EDIT:

So, habe den Quelltext 1:1 nach Delphi portiert und ausprobiert. Keine
Probleme! Müsste also wirklich an PB liegen...

Total verrückt! Jetzt muss ich mir eine OpenRequester dll in Delphi
schreiben, um einen openrequester in PB zu haben :shock:
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

Was mir gerade auffällt: Die PB-IDE soll ja auch mit PB erstellt worden sein.
Da gibt es keine Probleme beim Öffnen einer Datei! Funktioniert auch
mehrmals

Bin echt am verzweifeln :cry: :cry:
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Cardian
Beiträge: 40
Registriert: 15.11.2004 01:24

Beitrag von Cardian »

Da mir dieser Fehler auch grad aufgefallen ist ...

Ich orientiere mich an diesem Test-Code einer meiner Vorgänger:

Code: Alles auswählen


OpenWindow(0, 0, 0, 300, 200, "FileRequester Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
  CreateGadgetList(WindowID(0))
  ButtonGadget(0, 50, 50, 80, 25, "Open File")
 
Procedure Open()
  Protected TheFile.s
 
  TheFile = OpenFileRequester("FileRequester Test", "", "Alle Dateien | *.*", 0) 
EndProcedure
 
Repeat
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_Gadget
     If EventGadget() = 0
        Open()
     EndIf
  EndIf

Until Event = #PB_Event_CloseWindow
Bei mir führt der oben angegebene Code unter PB 4.0 zu:
Beim ersten Mal wurde der Code ignoriert (Dialog nicht aufgerufen, TheFile war leer).
Beim zweiten Mal: "Invalid Memory Access" ausgeführt, was denn dazu führt, das TheFile leer ist.
Shift-F5
Danach verweist er auf die Zeile 1 und meint: "Debugger out of memory!". Er verweist auch dann auf Zeile 1, wenn dort gar kein Code drinsteht.

Alles ein ziemliches Durcheinander, OK, Neustart von PureBasic:

Im Debug-Modus:
1. Ausführen: Funktioniert
2. Ausführen: Stack Overflow

Im Exe-Modus:
Funktioniert es.


@Persepole: Ich halte dies auch für einen Bug, der allerdings nur auf bestimmten Rechnern auftritt. Denke daß da ein Zugriff auf einen "üblichen" Speicherbereich erfolgt, der je nachdem wo genau welche Funktion liegt, klappen kann oder nicht.
Bei jedem Rechner können ja die Prozesse an verschiedenen Adressen liegen und je nachdem wie groß z.B. Treiber oder andere Programme sind, verschieben sich die Adressbereiche. Anders kann ich mir das erstmal nicht erklären. Bin aber kein BS-Profi.
Und scheinbar müßte dann der fehlerhafte Zugriff vom Debugger der PB-IDE ausgelöst sein.
Das Gemeine ist eben, daß bestimmte Leute diesen Fehler einfach nicht nachvollziehen können. Darum laß dir keine grauen Haar wachsen, Persepole. ;)
Alternativen:
1.) Bug-Report im englischen Forum (Fred wird diesen Fehler im ungünstigsten Fall aber gar nicht nachvollziehen können). Erst wenn genügend Fehlermeldungen vorliegen wird man was tun, denk ich.
2.) OpenFileRequester nicht benutzen. WinApi geht.
3.) Hast du es mal als Exe probiert? Wenn es dort geht, einfach auslagern, bis das Problem irgendwann mal gelöst wird.


@All: Stänkert mal hier nicht so herum. Ich kenn euch nämlich auch anders. o_O und da habt ihr mir schon bei bekloppteren Sachen geholfen! :D
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

>2.) OpenFileRequester nicht benutzen. WinApi geht.

Hatte den Bug auch schon bei Benutzung von WinAPI und PB. Ist aber total
verrückt! An manchen Tagen keine Probleme, dann mal wieder, dann mal
wieder nicht! Ich versteh das nicht... :freak:
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

diesen bug unbedingt im englischen forum melden. der ima ist mir gerade auch einmal passiert, sowohl api als auch pb. :o

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
persepole
Beiträge: 36
Registriert: 14.04.2005 22:56

Beitrag von persepole »

Hallo,

unschönes Problem hier. Bisher löse ich das Problem
mit folgender unschönen Lösung, hehe.

Code: Alles auswählen

RegGetVal.s = RegGetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","ShowInfoTip",".")

If RegGetVal = "1"
  RegSetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","ShowInfoTip","0",#REG_DWORD,".")
EndIf

open$ = OpenFileRequester("Projekt öffnen", inp, "Datei (*.vp)|*.vp", 0)

If RegGetVal = "1"
 RegSetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","ShowInfoTip","1",#REG_DWORD,".")
EndIf

Die Tooltips werden vor jedem aufruf abgeschaltet.
Bisher habe ich auf 5 Rechner noch keine Fehlermeldung bekommen.
Scheint ganz gut zu Funktionieren.

MFG
persepole
Antworten