Avatar billede kjeldsted Novice
21. maj 2009 - 19:24 Der er 8 kommentarer og
1 løsning

Sammenlign tekst med data fra dropdown

Hej.

Kort sagt har jeg en dropdown menu, hvori jeg (sjovt nok) har en række data. Disse data er:

12 FPS
24 FPS
25 FPS
29 FPS
29.97 FPS
29.97 FPS (Non-drop)
30 FPS
60 FPS
Frames

(Jeg har indsat disse data med: SendDlgItemMessage(Dlg,IDC,CB_ADDSTRING,0,(LPARAM)"12 FPS");)

Jeg skal bruge dataen fra denne dropdown til en indstilling, hvorved jeg ønsker en float værdi som fx kan være 12.0, 24.0, 29.97 (eller 0 hvis brugeren har valgt Frames).

Dog er mit problem at når jeg prøver at sammenligne indholdet fra dropdown menuen med fx "24 FPS" vil den lige meget hvad jeg vælger ikke gøre som jeg vil. Fx:

    char cFPS[50];
    GetDlgItemText(Dlg,IDC_FPS,cFPS,50);
    if(cFPS=="24 FPS") MessageBox(Dlg,"Du valgt 24 FPS","Test",NULL);

Hér vil (cFPS=="24 FPS") så tydelig give False idet den ikke lige frem viser denne meddelse (mens ved (cFPS!="24 FPS") viser den meddelsen lige meget hvad).

Hvis jeg prøver at udskrive cFPS vil den naturligvis skrive "24 FPS" som forventet.

Hvad pokker er det jeg gør forkert?

Ps. Jeg programmere i Visual C++, Win32 API.
Avatar billede arne_v Ekspert
21. maj 2009 - 19:29 #1
if(cFPS=="24 FPS")

->

if(strcmp(cFPS,"24 FPS")==0)
Avatar billede kjeldsted Novice
21. maj 2009 - 19:32 #2
Lige hvad jeg manglede. Fantastisk.

Mange tak, og smid gerne et svar :)
Avatar billede arne_v Ekspert
21. maj 2009 - 19:40 #3
kommer her
Avatar billede arne_v Ekspert
21. maj 2009 - 19:41 #4
Nu man jeg saa se at du bruger ANSI.

Hvis din Win32 API kode skal vaere "helt rigtig" skal du lave den saa den virker baade med ANSO og UNICODE.
Avatar billede kjeldsted Novice
21. maj 2009 - 19:50 #5
Hm. Hvordan skal jeg så gøre det?
Avatar billede arne_v Ekspert
21. maj 2009 - 20:12 #6
Det er et lidt halvstor emne.

Men proev og kig paa foelgende eksempel:

#include <stdio.h>
#include <string.h>

//#define UNICODE
//#define _UNICODE

#include <windows.h>
#include <tchar.h>

int main()
{
    char s1[] = "ABC";
    wchar_t s2[] = L"ABC";
    TCHAR s3[] = _T("ABC");
    printf("%d %d\n", sizeof(s1), strlen(s1));
    if(strcmp(s1, "ABC") == 0)
    {
        printf("%s is ABC\n", s1);
    }
    wprintf(L"%d %d\n", sizeof(s2), wcslen(s2));
    if(wcscmp(s2, L"ABC") == 0)
    {
        wprintf(L"%s is ABC\n", s2);
    }
    _tprintf(_T("%d %d\n"), sizeof(s3), _tcslen(s3));
    if(_tcscmp(s3, _T("ABC")) == 0)
    {
        _tprintf(_T("%s is ABC\n"), s3);
    }
    return 0;
}

str = ANSI
wcs = UNICODE
tcs = ANSI eller UNICODE afhaengig af define
Avatar billede kjeldsted Novice
21. maj 2009 - 20:45 #7
Nu er jeg forholdsvis ny inden for denne type programmering (har før rodet med PHP), så bliver lige nødt til at spørge om hvorfor det egentlig er nødvendigt både at tjekke med ANSI og UNICODE.
Avatar billede arne_v Ekspert
21. maj 2009 - 21:28 #8
ANSI understoetter kun en familie af alfabeter samtidigt og slet ikke asiatiske alfabeter. UNICODE kan klare det hele.

De fleste professionelle Windows programmer understoetter UNICODE. Og den meste Win32 C/C++ kode bruger derfor T'erne.

Hvilken bog/tutorial laerer du Win32 API efter? Der burde vaere et kapitel om dette emne.

Du behoever ikke at kaste dig over det lige nu. Men er du serioes med hensyn til Win32 API saa skal du igang med det paa et tidspunkt.
Avatar billede kjeldsted Novice
21. maj 2009 - 22:48 #9
Well. Nu siger du bog :) Pt. har jeg kastet mig over Google og Microsoft's fine online bibliotek, med funktioner. Men er lidt på udkig efter noget ordentligt læsestof så jeg kan komme i gang for alvor. Og så vil jeg sikker kunne læse lidt mere om det.

Men det lyder til jeg bare springer emnet over lige nu, og det projekt jeg pt. roder med er egentlig bare for at lære noget. Men vil da helt sikker vælge at understøtte UNICODE i det første projekt som for alvor skal bruges til noget.
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