Editbox als Integer

Status
Niet open voor verdere reacties.

flappie1239

Gebruiker
Lid geworden
19 jun 2007
Berichten
6
Ik krijg mijn inhoud van mijn Editbox niet omgezet naar een Int. Het idee is om een teller te maken die met een druk op knop1 opgehoogd wordt en met knop2 verlaagd wordt. Eerst geprobeerd op de volgende manier (optellen dan)

if (Score->Text == "2" ) {
Score->Text = 3;
}

if (Score->Text == "3" ) {
Score->Text = 4;
}

ect.

Hier kwam ik al snel tot de conclusie dat hij dan alles in 1 keer doorloopt en dis gelijk doorgaat naar 4 ipv 3

Als ik een integer ga gebruiken zal dit wel werken, alleen loop ik nu tegen het string into int aan.


void __fastcall TForm1::FormCreate(TObject *Sender)
{
int A;
A = (Edit1);
A++;
Edit1 = A;
}

Robert
 
ok wacht ff ik snap je ff niet. je zegt dit:

Ik krijg mijn inhoud van mijn Editbox niet omgezet naar een Int.
Het idee is om een teller te maken die met een druk op knop1 opgehoogd wordt en met knop2 verlaagd wordt.

waarom maak je een editbox als je een teller wilt?
 
Laatst bewerkt:
Was er geen functie die atoi() heette?

En jouw code:
Code:
if (Score->Text == "2" ) {
Score->Text = 3;
}

if (Score->Text == "3" ) {
Score->Text = 4;
}
Je begint bij als het 2 is, dan maak je er 3 van en gaat verder dan denkt hij.. hee, het is 3 dus ik maak er 4 van..

Code:
if(...)
{
    //Blaat
}
else if(...)
{
    //Blaat
}

Moet wel werken denk..
 
Laatst bewerkt:
^^ true gebruik else if of begin bij het grootste getal maar wil je serieus zo'n grote switch maken? lijkt me niet aan te raden
 
atoi() zette volgens mij een string om in een integer
en dan was itoa() het omgekeerde

Ik weet het niet zeker meer maar als het zo is:
Code:
int nGetal = atoi(Score->Text)
nGetal++
Score->Text = itoa(nGetal)
 
Ik loop dan nu tegen het probleem aan:

[BCC32 Error] teller.cpp(22): E2034 Cannot convert 'AnsiString' to 'const char *'

Wat is dat dan voor een fout?

:confused:

robert

De "grote" code werkt maar het liefts natuurlijk met de integer ;)
 
Laatst bewerkt:
Hmm misschien moet je iets typecasten :confused:

Hier in ieder geval een werkend voorbeeld waar je misschien wat aan hebt:
Code:
#include <windows.h>

#define IDC_SCORE    101
#define IDC_INCREASE 102

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
void Increase();

char* szClassName = "WindowsApp";
HWND hWndScore,
     hWndIncrease;

int WINAPI WinMain( HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine,
                    int nCmdShow)

{
    HWND hWnd;
    MSG messages;
    WNDCLASSEX wincl;

    wincl.hInstance = hInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof(WNDCLASSEX);
    wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW + 11);

    if (!RegisterClassEx(&wincl)){ return 0; }

    hWnd = CreateWindowEx(
           0,
           szClassName,
           "Windows App",
           WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,
           CW_USEDEFAULT,
           130,
           110,
           HWND_DESKTOP,
           NULL,
           hInstance,
           NULL
           );

    ShowWindow(hWnd, nCmdShow);

    while(GetMessage(&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}

LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_CREATE:
            hWndScore = CreateWindowEx(
                            WS_EX_CLIENTEDGE,
                            "Edit",
                            "",
                            WS_VISIBLE | WS_CHILD,
                            10, 10,
                            100, 20,
                            hWnd,
                            (HMENU)IDC_SCORE,
                            GetModuleHandle(NULL),
                            NULL
                            );
            hWndIncrease = CreateWindowEx(
                               0,
                               "Button",
                               "Increase",
                               WS_VISIBLE | WS_CHILD,
                               10, 40,
                               100, 25,
                               hWnd,
                               (HMENU)IDC_INCREASE,
                               GetModuleHandle(NULL),
                               NULL
                               );
        break;
        case WM_COMMAND:
            switch(wParam)
            {
                case IDC_INCREASE:
                    Increase();
                break;
                }
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
    }

    return 0;
}

void Increase()
{
    char buffer[50];
    GetWindowText(hWndScore, buffer, 50);
    int nGetal = atoi(buffer);
    nGetal++;
    itoa(nGetal, buffer, 10); //10 voor decimaal tallenstelsel of hoe dat ook heet..
    SetWindowText(hWndScore, buffer);
}
 
je moet een character container maken, als je hier dan met sprintf je string in stopt zou het moeten werken als je de container naar atoi stuurt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan