ExplorerTreeGadget & GetGadgetText

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

ExplorerTreeGadget & GetGadgetText

Beitrag von edel »

Moin,

beim portieren eines Programms ist mir aufgefallen, dass GetGadgetText die Dateinamen verunstaltet.
Z.B. :
"/Users/bubi/Library/Application Support/AddressBook/guration.plist"
statt
"/Users/bubi/Library/Application Support/AddressBook/Configuration.plist"

Getestet habe ich es mit Unicode und ohne, PB5.31/64 und MacOS 10.10.4

Kann das jemand nachvollziehen, oder habe ich einen Fehler eingebaut?
Gibt es Alternativen?

Code: Alles auswählen

Procedure Event_ChangeDir()
  Debug GetGadgetText(0)
EndProcedure

Procedure Main()  
  
  If OpenWindow(0,0,0,500,500, "")
    
    ExplorerTreeGadget(0, 0, 0, 500, 500, GetHomeDirectory())
    
    BindGadgetEvent(0, @Event_ChangeDir(), #PB_EventType_Change)
    
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
    
  EndIf
  
EndProcedure:End Main()
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: ExplorerTreeGadget & GetGadgetText

Beitrag von Shardik »

Es handelt sich eindeutig um einen Bug in der MacOS-Version von PB. Immer fehlen die ersten 5 Zeichen des Dateinamens. Bei Verzeichnisnamen tritt der Fehler übrigens nicht auf. Es liegt auch nicht am BindGadgetEvent(), denn wenn man eine ganz normale Event-Schleife aufbaut, tritt der Fehler genauso auf:

Code: Alles auswählen

OpenWindow(0, 0, 0, 500, 500, "")
ExplorerTreeGadget(0, 0, 0, 500, 500, GetHomeDirectory())
  
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      If EventType() = #PB_EventType_Change
        Debug GetGadgetText(0)
      EndIf
  EndSelect
ForEver
#PB_EventType_Change ist auch ausdrücklich in der Hilfe für das ExplorerTreeGadget als unterstütztes Ereignis aufgeführt.

Wenn man übrigens einen Dateinamen mit weniger als 6 Zeichen anklickt, wird sogar mit folgender Fehlermeldung abgebrochen:
PureBasic Fehlermeldung hat geschrieben:[ERROR] *** - [NSCFString substringFromIndex:]: Range or index out of bounds
Getestet habe ich mit MacOS X 10.6.8 (Snow Leopard) mit PB 5.31 x86 und x64 im ASCII- und Unicode-Modus.

Der beschriebene Fehler scheint in allen Cocoa-Framework Versionen von PB vorhanden zu sein:
- PB 5.00
- PB 5.11
- PB 5.24
- PB 5.31

Mit dem Carbon-Framework tritt dieser Fehler hingegen nicht auf:
- PB 4.61 (reine Carbon-Version)
- PB 5.00 mit Subsystem Carbon
- PB 5.11 mit Subsystem Carbon (letzte PB-Version mit Subsystem Carbon)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: ExplorerTreeGadget & GetGadgetText

Beitrag von edel »

Danke dir. :allright:
Ich habe es mal im englischen Forum geposten.
http://www.purebasic.fr/english/viewtop ... 24&t=62662
Antworten