|
| palm CtlSetLabel Fra : Troels Thomsen |
Dato : 23-04-04 09:43 |
|
Hej,
Jeg sidder og piller i noget palm kode og kan ikke forstå at det virker ....
void CtlSetLabel (ControlType *controlP,const Char *newLabel)
This function stores the newLabel pointer in the control's data
structure. It doesn't make a copy of the string that is passed in.
Therefore, if you use CtlSetLabel, you must manage the string
yourself. You must ensure that it persists for as long as it is being
displayed <cut>
const char aString[] = "some text";
void formInit()
{
CtrlSetLabel ( .... , aString); // should be ok !
CtrlSetLabel ( .... , "Hello there"); // error ?
}
Og så er det at jeg spekulerer lidt på om der er garanti for at strengen
eksisterer når formInit afsluttes. Svjv kan sådan en const streng være
placeret i R/O memory, og måske er det derfor at det tilsyneladende virker?
Uden at kende andet til Palm, vil i så ikke mene at det er imod de beskrevne
regler at gøre som vist ?
mvh Troels
| |
Byrial Jensen (23-04-2004)
| Kommentar Fra : Byrial Jensen |
Dato : 23-04-04 21:37 |
|
Troels Thomsen wrote:
> const char aString[] = "some text";
>
> void formInit()
> {
> CtrlSetLabel ( .... , aString); // should be ok !
> CtrlSetLabel ( .... , "Hello there"); // error ?
> }
>
> Og så er det at jeg spekulerer lidt på om der er garanti for at strengen
> eksisterer når formInit afsluttes.
Det er der garanti for i både C og C++. Strengkonstanter har samme
varighed som statiske variable, dvs. de er der hele tiden mens
programmet kører.
> Svjv kan sådan en const streng være placeret i R/O memory,
Det kan den, og det giver udefineret adfærd at forsøge at ændre den.
> og måske er det derfor at det tilsyneladende virker?
Sprogdefinitionerne siger at det skal virke.
> Uden at kende andet til Palm, vil i så ikke mene at det er imod de beskrevne
> regler at gøre som vist ?
Nej.
| |
Troels Thomsen (26-04-2004)
| Kommentar Fra : Troels Thomsen |
Dato : 26-04-04 09:52 |
|
>
> Strengkonstanter har samme varighed som statiske variable,
>
Det er jo klar tale, tak.
tpt
| |
|
|