Avatar billede challenge Praktikant
03. oktober 2010 - 15:08 Der er 4 kommentarer og
1 løsning

Excel SDK konverter LPXLOPER12

Hej,

Jeg er ved at udvikle et par UDFs, og skal i den forbindelse kunne foretage visse handlinger alt efter hvilke værdi (tekst) bruger indsætter i sin formel. Jeg kan nemt konvertere et numerisk input til en int,
output = (int)input->val.num;
men jeg har endnu ikke fundet ud af, hvordan jeg gør det samme med en tekststreng som input.

Any ideas?
Avatar billede arne_v Ekspert
03. oktober 2010 - 16:15 #1
atoi og strtol kan konvertere fra char* til int.

Så hvis du kan få fat i en char*, så er resten nemt.
Avatar billede challenge Praktikant
03. oktober 2010 - 17:01 #2
Jeg har brug for at konvertere LPXLOPER12 til en type jeg kan arbejde med - char, string, BSTR eller lignende. Jeg mener at LPXLOPER12-tekst-værdier er af typen XCHAR*, der dog ikke blot kan type castes til char.
Avatar billede arne_v Ekspert
03. oktober 2010 - 19:17 #3
så vidt jeg kan læse mig til er .str en XCHAR* og en XCHAR* er en wchar_t* d.v.s. at du kan bruge wcs funktionerne på den.
Avatar billede challenge Praktikant
05. oktober 2010 - 17:54 #4
Løsningen er (for konvertering til wstring):

__declspec(dllexport) LPXLOPER12 WINAPI XLLFUNCTIION(LPXLOPER12 input)
{
    wchar_t * val = input->val.str;
    std::wstring tmp(val+1, *(unsigned short *)val);

    (...)
}
Avatar billede arne_v Ekspert
06. oktober 2010 - 04:27 #5
Hvad pokker gør:

std::wstring tmp(val+1, *(unsigned short *)val);

?

std::wstring tmp = val;

bør virke !
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