/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Returner streng til VB
Fra : L. Hansen


Dato : 25-07-01 11:48

Hej

Bruger Visual C++ 5.0 Enterprise / Windows 98
Fremstiller en DLL i ovennævnte og skal 'blot' returnere en streng.
Denne kode crasher:

Char* _stdcall TestLogFNr()
{
return ("AGENT 007");
}

....
Denne kode giver compileringsfejl:

BSTR _stdcall TestLogFNr()
{
BSTR bstrFDATA;
bstrFDATA = "AGENT 007";
return (bstrFDATA);
}

....
Er der en i NG'en der lige kan anvise den korrekte syntaks for:

Tildeling af værdi til streng, samt korrekte måde at returnere værdien.

(Jeg benytter IKKE MFC, men bruger blot .cpp / .def / .rc)

På forhånd tak.

Mvh, L. Hansen
webmaster@dancar.dk




 
 
Mogens Hansen (25-07-2001)
Kommentar
Fra : Mogens Hansen


Dato : 25-07-01 14:51


"L. Hansen" <webmaster@dancar.dk> wrote in message
news:3b5ea413$0$260$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Bruger Visual C++ 5.0 Enterprise / Windows 98
> Fremstiller en DLL i ovennævnte og skal 'blot' returnere en streng.
> Denne kode crasher:
>
> Char* _stdcall TestLogFNr()
> {
> return ("AGENT 007");
> }
>
> ...
> Denne kode giver compileringsfejl:
>
> BSTR _stdcall TestLogFNr()
> {
> BSTR bstrFDATA;
> bstrFDATA = "AGENT 007";
> return (bstrFDATA);
> }
>

jeg tror (det er _ikke_ test) at det er


BSTR _stdcall TestLogFNr()
{
return SysAllocString(L"AGENT 007");
}


Venlig hilsen

Mogens Hansen



L. Hansen (25-07-2001)
Kommentar
Fra : L. Hansen


Dato : 25-07-01 15:05

Hej

Tak for dit hurtige svar.

Jeg får nu en anden fejl:
error C2664: 'SysAllocString' : cannot convert parameter 1 from 'char [10]'
to 'const unsigned short *'

Mvh, L. Hansen
webmaster@dancar.dk


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:3b5ece4e$1@lxcs1.manbw.dk...
> jeg tror (det er _ikke_ test) at det er
>
>
> BSTR _stdcall TestLogFNr()
> {
> return SysAllocString(L"AGENT 007");
> }



Soeren Sandmann (25-07-2001)
Kommentar
Fra : Soeren Sandmann


Dato : 25-07-01 15:39

"L. Hansen" <webmaster@dancar.dk> writes:

[Jeg har omorganiseret dit indlæg, så teksten står i den rækkefølge
den skal læses]

> > BSTR _stdcall TestLogFNr()
> > {
> > return SysAllocString(L"AGENT 007");
> > }
>
> Tak for dit hurtige svar.
>
> Jeg får nu en anden fejl:
> error C2664: 'SysAllocString' : cannot convert parameter 1 from 'char [10]'
> to 'const unsigned short *'

Jeg kender ikke noget til Window, så dette er kun et gæt: Du glemte
L'et foran "AGENT 007"?

L. Hansen (25-07-2001)
Kommentar
Fra : L. Hansen


Dato : 25-07-01 16:48

"Soeren Sandmann" <sandmann@daimi.au.dk> skrev i en meddelelse
news:ye87kwxaxaq.fsf@alex.daimi.au.dk...
> Jeg kender ikke noget til Window, så dette er kun et gæt: Du glemte
> L'et foran "AGENT 007"?

Ok - det er korrekt.
Men jeg modtager desværre en streng i formatet:

"A|G|E|N|T| |0|0|7"

hvor de lodrette tegn er lidt mere fede.
Jeg gætter på, at der skal kaldes en strengkonvertering inden der
returneres.
Jeg har inkluderet <string.h>

Mvh, L. Hansen
webmaster@dancar.dk




Mogens Hansen (25-07-2001)
Kommentar
Fra : Mogens Hansen


Dato : 25-07-01 19:57


"L. Hansen" <webmaster@dancar.dk> wrote in message
news:3b5eea57$0$344$edfadb0f@dspool01.news.tele.dk...
> Men jeg modtager desværre en streng i formatet:
>
> "A|G|E|N|T| |0|0|7"
>
> hvor de lodrette tegn er lidt mere fede.
> Jeg gætter på, at der skal kaldes en strengkonvertering inden der
> returneres.

Så prøv

#include <stdlib.h>

BSTR _stdcall TestLogFNr()
{
wchar_t buffer[1024];
mbstowcs(buffer, "AGENT007", sizeof(buffer)/sizeof(buffer[0]));
return SysAllocString(L"AGENT 007");
}

jeg tror at der er en chance for at det virker bedre på din platform, men
jeg har stadig ikke tested det.

Venlig hilsen

Mogens Hansen



L. Hansen (25-07-2001)
Kommentar
Fra : L. Hansen


Dato : 25-07-01 23:17


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:9jn4lc$l4b$1@news.cybercity.dk...
> Så prøv
>
> #include <stdlib.h>
>
> BSTR _stdcall TestLogFNr()
> {
> wchar_t buffer[1024];
> mbstowcs(buffer, "AGENT007", sizeof(buffer)/sizeof(buffer[0]));
> return SysAllocString(L"AGENT 007");
> }
>
> jeg tror at der er en chance for at det virker bedre på din platform, men
> jeg har stadig ikke tested det.
>
> Venlig hilsen
>
> Mogens Hansen
>
>

Jeg filtrerer strengen når den modtages i VB - det er da rimeligt og
fungerer uden crash.
Tusinde mange tak for din flotte hjælp.

Med venlig hilsen

L. Hansen
webmaster@dancar.dk




Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste