Avatar billede superdan Nybegynder
11. december 2003 - 18:58 Der er 13 kommentarer og
1 løsning

"typecasting af String til toInt16"

Jeg skal lave en String om til int i VC7.0 (.net). Jeg bruger det nye framework.

Jeg gør følgende:
...
String* speedbyte="123456";
int Ispeedbyte=Convert::ToInt16(speedbyte);
...
og det compiler også fint, men jeg får en runtime error når funktionen med koden bliver kaldt.

Nogen der ved hvorfor??? jeg skal  bare have en helt almindelig int ud af det.

PÅ FORHÅND THANX
Avatar billede soreno Praktikant
11. december 2003 - 19:01 #1
ToInt16 antyder at det er konvertering til 16 bit int.

Det giver mulighed for tal af maks størrelse 2^16 (eller nærmere 2^15 da det formentlig er en signed int).

Måske du skulle prøve:
int Ispeedbyte=Convert::ToInt32(speedbyte);


Men det er kun et gæt. Jeg ved stort set intet om .net og managed c++.
Avatar billede superdan Nybegynder
11. december 2003 - 19:04 #2
har prøvet og det er være irellevant. får stadig samme fejl
Avatar billede arne_v Ekspert
11. december 2003 - 19:05 #3
Den er signed så der er 2^15-1.

ToInt32 lyder som et glimrende forslag.

Hvilken fejl får du ?
Avatar billede arne_v Ekspert
11. december 2003 - 19:09 #4
Har du prøvet den anden måde at gøre det på ?

int Ispeedbyte = ToInt32.Parse(speedbyte);
Avatar billede arne_v Ekspert
11. december 2003 - 19:10 #5
int Ispeedbyte = Int32.Parse(speedbyte);
Avatar billede ttn.bonk Nybegynder
12. december 2003 - 11:10 #6
Det kan også (afhængig af prototype definition) være noget så simpelt som

int Ispeedbyte=Convert::ToInt16(*speedbyte);

eller

int Ispeedbyte=Convert::ToInt16((char*)*speedbyte);
Avatar billede segmose Nybegynder
12. december 2003 - 11:17 #7
ttn.bonk > i den sidste mener du vel

int Ispeedbyte=Convert::ToInt16((*speedbyte).c_str());
Avatar billede arne_v Ekspert
12. december 2003 - 11:27 #8
En .NET System String er ikke det samme som en en ANSI C++ STL string
Avatar billede ttn.bonk Nybegynder
12. december 2003 - 13:53 #9
segmose: Du har ret, jeg læste String som CString :-(
arnve v: Du har sikkert også ret - kender ikke .NET og om .NET har en egen String klasse.

Men ideen var såmænd, som I sikkert har observeret :-), at superdan overførte en pointer til String, hvor jeg gættede på det måske skulle være en String som skulle overføres (eller mere sandsynligt char*).
Avatar billede ttn.bonk Nybegynder
12. december 2003 - 13:56 #10
PS: Med eksemplet på 123456 bør man også bruge 32 bit integer da 16 bit integer maksimalt kan være ca. 32000, så soreno/arne v's forslag er stadig relevante.
Avatar billede arne_v Ekspert
12. december 2003 - 15:01 #11
Ja - .NET har en type String (med stort S uden C) i System
namespace.
Avatar billede superdan Nybegynder
15. december 2003 - 11:53 #12
Jeg må nok krybe til korset og sige at fejlen helt og holdent ligger på mine skuldre.

Filen der læses fra, indeholder et følgende:

#
12/10/03 17:11:10
77111411
77111022
77111222
77111432
77111003
77111210
77111320
#
12/10/03 17:11:36
77111412
77111122
77111233
77111433
... og så videre...

Jeg kunne bare konstatere at jeg fik læst det rigtige antal linier ind efter timestamp'et. Desværre fik jeg også læst timestampet med og det var skråstregerne der dræbte konverteringen...

SORRY GUYS.
hvis der er nogen der føler de alligevel bør  have points så sig lige til. Det er sq lidt pinligt at poste et spørgsmål når det bare er fordi man selv er kvajet...
Avatar billede ttn.bonk Nybegynder
15. december 2003 - 16:40 #13
Hej superdan,

du kan jo gøre afbigt og kalde dig subdan et par dage ;-).

Nå, spøg til side - det er meget fint at du kommer med svaret/forklaringen,
der er ikke noget mere irriterende end en ikke afsluttet sag, så tak for det.
Avatar billede superdan Nybegynder
18. august 2004 - 08:27 #14
jamen så lukker jeg selv spørgsmålet.... og alle må kalder mig slubberDan de næste 2 måneder hehe...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester