Deutsch
Forum

SelectString & Array's

 
- Seite 1 -



Julian
Schmidt
Hallo,
ich habe ein kleines Problem mit SelectString wegen eines Array's
Hier mal ein Minibeispiel.
KompilierenMarkierenSeparieren
cls
declare choosetitle&,ok&,Abort&,edit&, chbox2&, titleedit&, choose&, titelschrift$[], font&, ende%
titleedit&=Create("Edit",%hwnd,"Title",20,20,200,32)
titelschrift$[1]="Times New Roman"
font&=Create("Font",titelschrift$[1],27,0,1,0,0)
SetFont titleedit&,font&
EnableWindow titleedit&,0
choose&=Create("Button",%hwnd,"Title ändern",240,19,120,35)

while 1

    waitinput
    case getfocus(choose&) : Titleaendern

Endwhile

Proc Titleaendern

    choosetitle&=Create("Window",%hwnd,"Titel anpassen",200,100,400,200)
    ok&=Create("Button",choosetitle&,"Ok",width(choosetitle&)-90,height(choosetitle&)-50,70,30)
    Abort&=Create("Button",choosetitle&,"Abbrechen",20,height(choosetitle&)-50,100,30)
    edit&=Create("Edit",choosetitle&,Gettext$(titleedit&),20,20,width(choosetitle&)-40,25)
    chbox2&=Create("ChoiceBox", choosetitle&, 1, 20, 55, width(choosetitle&)-40, 130)
    ClearList
    AddFonts
    MoveListToHandle(chbox2&)
    SelectString(chbox2&,-1, titelschrift$[1])
    Messagebox(titelschrift$[1],"",0)
    clear ende%

    whilenot ende%

        if getfocus(ok&)

            titelschrift$[1]=GetText$(chbox2&,GetCurSel(chbox2&))
            Messagebox(titelschrift$[1],"",0)
            font&=Create("Font",titelschrift$[1],27,0,1,0,0)
            Setfont titleedit&,font&
            SetText titleedit&, Gettext$(edit&)
            destroywindow(choosetitle&)
            ende%=1

        elseif getfocus(abort&)

            destroywindow(choosetitle&)
            ende%=1

        Endif

    Endwhile

EndProc


SelectString tut leider nicht immer in der Choicebox die entsprechende Font auswählen.
Wenn ich allerdings das Array ( titelschrift$[1] ) durch einen normalen String ersetze funktioniert es einwandfrei.
In der Variable titelschrift$[1] steht immer der richtige Wert!

Wo liegt das Problem das SelectString nicht immer markiert

LG

Julian57
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
09.05.2011  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Nico
Madysa
Der Fehler liegt in der Zeile:
KompilierenMarkierenSeparieren
titelschrift$[1]=GetText$(chbox2&,GetCurSel(chbox2&))

Bis dato wusste ich nicht mal, dass man GetText$ so benutzen darf.
Das Problem liegt darin, dass der String, den du hier erhältst, noch ein zusätzliches Leerzeichen am Ende hat -- das du in deinen MessageBoxen natürlich nicht sehen konntest. Hättest du mal das hier eingebaut:
KompilierenMarkierenSeparieren
MessageBox("|" + titelschrift$[1]+"|","",0)

dann hättest du gesehen, dass vor dem schließenden Strich eine Lücke klafft.
Umwege, das zu lösen, gibt es zwei. Du könntest einmal mittels Trim$ das Leerzeichen beseitigen:
KompilierenMarkierenSeparieren
titelschrift$[1]=Trim$(GetText$(chbox2&,GetCurSel(chbox2&)))

oder du nutzt GetString$, wie ich es bisher für richtig gehalten habe:
KompilierenMarkierenSeparieren
titelschrift$[1]=GetString$(chbox2&,GetCurSel(chbox2&))

Beides sollte zum Ziel führen.
Warum genau bei GetText$ am Ende ein Leerzeichen hinzugerät, weiß ich allerdings selbst nicht.

PS: Noch mal in der Hilfe geblättert. GetText$ ist gar nicht für Choiceboxen gedacht. In der Hilfe steht klar, dass diese -- genau wie Listboxen -- mittels GetString$ auszulesen sind.
 
Nico Madysa
09.05.2011  
 



Du bedenkst das der 1. Eintrag eines Arrays die ID 0 besitzt?
 
09.05.2011  
 




Nico
Madysa
Der Fehler liegt in der Zeile:
KompilierenMarkierenSeparieren
titelschrift$[1]=GetText$(chbox2&,GetCurSel(chbox2&))

Bis dato wusste ich nicht mal, dass man GetText$ so benutzen darf.
Das Problem liegt darin, dass der String, den du hier erhältst, noch ein zusätzliches Leerzeichen am Ende hat -- das du in deinen MessageBoxen natürlich nicht sehen konntest. Hättest du mal das hier eingebaut:
KompilierenMarkierenSeparieren
MessageBox("|" + titelschrift$[1]+"|","",0)

dann hättest du gesehen, dass vor dem schließenden Strich eine Lücke klafft.
Umwege, das zu lösen, gibt es zwei. Du könntest einmal mittels Trim$ das Leerzeichen beseitigen:
KompilierenMarkierenSeparieren
titelschrift$[1]=Trim$(GetText$(chbox2&,GetCurSel(chbox2&)))

oder du nutzt GetString$, wie ich es bisher für richtig gehalten habe:
KompilierenMarkierenSeparieren
titelschrift$[1]=GetString$(chbox2&,GetCurSel(chbox2&))

Beides sollte zum Ziel führen.
Warum genau bei GetText$ am Ende ein Leerzeichen hinzugerät, weiß ich allerdings selbst nicht.

PS: Noch mal in der Hilfe geblättert. GetText$ ist gar nicht für Choiceboxen gedacht. In der Hilfe steht klar, dass diese -- genau wie Listboxen -- mittels GetString$ auszulesen sind.
 
Nico Madysa
09.05.2011  
 




Julian
Schmidt
thx
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
09.05.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.621 Betrachtungen

Unbenanntvor 0 min.
H.Brill24.09.2022
Jörg Sellmeyer30.05.2018
Georg Teles13.02.2016
rquindt14.08.2015
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Julian Schmidt (2x)
Nico Madysa (1x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie