|
| Button%i Fra : Ukendt |
Dato : 03-05-02 21:32 |
|
Hej hej!
Jeg skal have lavet en funktion, der alt efter hvilken værdi knap_nr har,
gør ting og sager ved en knap. Koden under virker ikke, hvad skal jeg så
gøre?
---
void tick(char retning, int antal_tick, char knap_nr)
{
char buffer[7];
sprintf(buffer,"Button%i->Left",knap_nr);
buffer->Left = buffer->Left + 25*antal_tick;
}
---
-Anders
| |
Ukendt (03-05-2002)
| Kommentar Fra : Ukendt |
Dato : 03-05-02 22:02 |
|
Ok, har fundet den første fejl. Det skal naturligvis være %s...
> Hej hej!
> Jeg skal have lavet en funktion, der alt efter hvilken værdi knap_nr har,
> gør ting og sager ved en knap. Koden under virker ikke, hvad skal jeg så
> gøre?
>
>
> ---
> void tick(char retning, int antal_tick, char knap_nr)
> {
> char buffer[7];
> sprintf(buffer,"Button%i->Left",knap_nr);
>
> buffer->Left = buffer->Left + 25*antal_tick;
> }
> ---
> -Anders
>
>
| |
Mogens Hansen (03-05-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 03-05-02 22:16 |
|
"König" <knep> wrote
> Ok, har fundet den første fejl. Det skal naturligvis være %s...
Brug klassen "std::ostringstream" i stedet for "sprintf" - så sørger
compileren for at det er den rigtige type.
Det er skal iøvrigt _ikke_ være %s.
Venlig hilsen
Mogens Hansen
| |
Ukendt (03-05-2002)
| Kommentar Fra : Ukendt |
Dato : 03-05-02 23:06 |
|
> Det er skal iøvrigt _ikke_ være %s.
Nej ikke s, en lille trykfejl. %c
-Anders
| |
Mogens Hansen (03-05-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 03-05-02 22:10 |
|
"König" <knep> wrote
> Jeg skal have lavet en funktion, der alt efter hvilken værdi knap_nr har,
> gør ting og sager ved en knap. Koden under virker ikke, hvad skal jeg så
> gøre?
>
Hvad havde du forventet den ville gøre ?
Det du måske skal gøre, er at bruge tid på at lære nogle grundliggende C++
programmering først, og vente lidt med at lave grafiske brugergrænseflader.
På den måde har de ikke så mange ting samtidigt.
>
> ---
> void tick(char retning, int antal_tick, char knap_nr)
> {
> char buffer[7];
> sprintf(buffer,"Button%i->Left",knap_nr);
>
Hvor stor er buffer ?
Hvor mange tegn forventer du at sprintf skriver i buffer ? (hint: flere end
der er plads til)
Hvorfor bruger du lav-niveau funktioner som sprintf, der giver mulighed for
buffer-overrun, når mere sikre alternativer findes ? (hint: se klassen
std::ostringstream)
> buffer->Left = buffer->Left + 25*antal_tick;
Hvilken type er buffer ?
Venlig hilsen
Mogens Hansen
| |
Byrial Jensen (04-05-2002)
| Kommentar Fra : Byrial Jensen |
Dato : 04-05-02 07:48 |
|
Mogens Hansen <mogens_h@dk-online.dk> skrev:
> Det du måske skal gøre, er at bruge tid på at lære nogle grundliggende C++
> programmering først, og vente lidt med at lave grafiske brugergrænseflader.
> På den måde har de ikke så mange ting samtidigt.
Det kunne jo være at den anonyme König prøver på at programmere i C,
men i det fald gælder dine kommentarer og forslaget om at lære det
grundliggende først alligevel.
> Hvorfor bruger du lav-niveau funktioner som sprintf, der giver mulighed for
> buffer-overrun, når mere sikre alternativer findes ? (hint: se klassen
> std::ostringstream)
Hvis det er et C-program, er snprintf() et lidt sikrere alternativ.
(Dog ikke mere sikkert end at programmeret stadig kan gå ned ved
fejl i formatstrengen).
| |
Mogens Hansen (04-05-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 04-05-02 08:55 |
|
"Byrial Jensen" <bjensen@nospam.dk> wrote in message
news:slrnad6ttt.21j.bjensen@ask.ask...
> Mogens Hansen <mogens_h@dk-online.dk> skrev:
> > Det du måske skal gøre, er at bruge tid på at lære nogle grundliggende
C++
> > programmering først, og vente lidt med at lave grafiske
brugergrænseflader.
> > På den måde har de ikke så mange ting samtidigt.
>
> Det kunne jo være at den anonyme König prøver på at programmere i C,
> men i det fald gælder dine kommentarer og forslaget om at lære det
> grundliggende først alligevel.
>
Hvis man antager at König er identisk med den König, der de seneste dage har
stillet en række spørgsmål, så kan man se at König anvender Borland
C++Builder og VCL.
Det kode som König postede i denne tråd (f.eks. "Button%i->Left") tyder på
at det stammer fra noget VCL programmering.
VCL _er_ C++ med nogle sprog extensions (når det ikke er Object Pascal).
Det er ikke ualmindeligt, men ikke optimalt, at anvende mindre sikre
konstruktioner, på trods af at der findes enklere og sikrere alternativer i
C++. Det var det jeg påpegede.
Venlig hilsen
Mogens Hansen
| |
Byrial Jensen (04-05-2002)
| Kommentar Fra : Byrial Jensen |
Dato : 04-05-02 10:29 |
|
Mogens Hansen <mogens_h@dk-online.dk> skrev:
> "Byrial Jensen" <bjensen@nospam.dk> wrote in message
>>
>> Det kunne jo være at den anonyme König prøver på at programmere i C,
>> men i det fald gælder dine kommentarer og forslaget om at lære det
>> grundliggende først alligevel.
>
> Hvis man antager at König er identisk med den König, der de seneste dage har
> stillet en række spørgsmål, så kan man se at König anvender Borland
> C++Builder og VCL.
O.k., jeg havde ikke lagt mærke til at det var den samme anonyme
person som stillede de andre spørsmål.
> Det kode som König postede i denne tråd (f.eks. "Button%i->Left") tyder på
> at det stammer fra noget VCL programmering.
> VCL _er_ C++ med nogle sprog extensions (når det ikke er Object Pascal).
Javel ja, jeg kunne ikke genkende noget i den postede kode, og uden
det kendskab kunne det for så vidt lige så godt være C-kode.
> Det er ikke ualmindeligt, men ikke optimalt, at anvende mindre sikre
> konstruktioner, på trods af at der findes enklere og sikrere alternativer i
> C++. Det var det jeg påpegede.
Jeg er helt enig i dette, jeg kunne bare ikke se at det drejede sig
om (forsøg på at lave) C++-kode.
| |
|
|