Italia
Foro

SelectString & Array's

 
- Page 1 -



Julian
Schmidt
Ciao,
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 naturalmente 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 per 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 Aiuto geblättert. GetText$ ist gar nicht per Choiceboxen gedacht. In der Aiuto 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 naturalmente 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 per 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 Aiuto geblättert. GetText$ ist gar nicht per Choiceboxen gedacht. In der Aiuto steht klar, dass diese -- genau wie Listboxen -- mittels GetString$ auszulesen sind.
 
Nico Madysa
09.05.2011  
 




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



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.618 Views

Untitledvor 0 min.
H.Brill24.09.2022
Jörg Sellmeyer30.05.2018
Georg Teles13.02.2016
rquindt14.08.2015
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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