Txt reihenweise auslesen mit Winapi Funktionen



  • Ok dann habe ich noch ne Frage...Also ich arbeite mit dem MinGW Delevoper Studio und wenn ich in meiner Winapi Anwendung jetzt die C++ Funktionen: ifstream,getline multimap usw...benutze dann erkennt er diese nicht obwohl ich die entsprechenden Libraries includet habe...das wär mir ganz wichtig...z.B. für :

    ifstream data("text.txt");
    

    habe ich folgende Libraries includet :

    #include <windows.h>
    #include <stdio.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <cstdlib>
    

    und es funkt immernoch nicht...oder kommt es vielleicht draufan wo ich den C++ in der Winapi Anwendung schreibe??
    😕



  • dontfeedphil schrieb:

    ifstream data("text.txt");
    

    habe ich folgende Libraries includet :

    #include <windows.h>
    #include <stdio.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <cstdlib>
    

    und es funkt immernoch nicht...oder kommt es vielleicht draufan wo ich den C++ in der Winapi Anwendung schreibe??
    😕

    1. Das sind Header, keine Libraries !

    2.

    dontfeedphil schrieb:

    oder kommt es vielleicht draufan wo ich den C++ in der Winapi Anwendung schreibe?? 😕

    Huh?!, bitte was ? C++ ist eine Programmiersprache, WinAPI eine 'Funktionssammlung' ... 😮

    3. 💡 ➡

    #include <windows.h>
    #include <stdio.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <cstdlib>
    
    using namespace std; // vllt. vergessen ?!^^
    
    // ...
    

    4. Zeig mal die Error-Log deines Compilers 😉 .



  • --------------------Configuration: VocabsRenew - Debug--------------------
    Compiling source file(s)...
    VocabsRenew.cpp
    VocabsRenew.cpp: In function `LRESULT WndProc(HWND__*, UINT, WPARAM, LPARAM)':
    VocabsRenew.cpp:104: error: jump to case label
    VocabsRenew.cpp:93: error:   crosses initialization of `std::ifstream data'
    VocabsRenew.cpp:121: error: jump to case label
    VocabsRenew.cpp:93: error:   crosses initialization of `std::ifstream data'
    VocabsRenew.cpp:104: warning: destructor needed for `data'
    VocabsRenew.cpp:104: warning: where case label appears here
    VocabsRenew.cpp:104: warning: (enclose actions of previous case statements requiring destructors in their own scope.)
    VocabsRenew.cpp:121: warning: destructor needed for `data'
    VocabsRenew.cpp:121: warning: where case label appears here
    VocabsRenew.cpp:128:2: warning: no newline at end of file
    


  • Zeig mir auch mal den entsprechenden Quellcode...

    BTW:
    Entweder:

    switch(Wert)
    {
       case 1:
       { int i = 0; /* ... */ } break;
       case 2: ...
    }
    

    oder:

    switch(Wert)
    {
       case 1:
       { int i; i = 0; /* ... */ } break;
       case 2: ...
    }
    

    oder so:

    int i;
    switch(Wert)
    {
       case 1:
       { i = 0; /* ... */ } break;
       case 2: ...
    }
    

    PS: Das sind Grundlagen...vllt solltest du mit einem C/C++ Tutorial anfangen.



  • Also sorry aber ich glaube du verstehst mich vollkommen falsch...Ich schreibe kein Konsolenprogramm....Und wenn ich mich irre dann entschuldige ich mich bei dir...^^



  • dontfeedphil schrieb:

    Also sorry aber ich glaube du verstehst mich vollkommen falsch...Ich schreibe kein Konsolenprogramm....Und wenn ich mich irre dann entschuldige ich mich bei dir...^^

    loly,...Ich glaube du verstehst mich falsch...

    Wenn man ein WinAPI Programm schreibt (das tust du ja^^) dann bruach man fundiertes Wissen in C und/oder C++.
    Denn WinAPI basiert auf der Programmiersprache C. Die solltest du dann auch annähernd beherschen, sonst hat es
    keinen Sinn 😉 .



  • @CodeFinder

    Ahaaa! Danke für die ausführliche Antwort, das war sehr aufschlußreich! 👍 👍 💡



  • @Elektronix: Jo Kein Problem 😉 !

    @dontfeedphil: Kannst mir deinen Code aber schon noch zeigen...vllt kann ich dir ja helfen 😉 .



  • Soll wenn Button geklickt wird Inhalt von Editfeld mit dem aus der Txt Datei vergleichen....
    Ich weiß wie man das Editfeld ausliest und das mit dem Button macht ,das hier ist nur ein Test und hier funkt es nicht mal mit der Txt....

    #include <windows.h>
    #include <stdio.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <cstdlib>
    
    #define ID_EDIT 1
    
    using namespace std;
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
       static TCHAR szAppName[] = TEXT ("Klassenname");
       HWND         hwnd;
       MSG          msg;
       WNDCLASSEX   wndclassex = {0};
    
       wndclassex.cbSize        = sizeof(WNDCLASSEX);
       wndclassex.style         = CS_HREDRAW | CS_VREDRAW;
       wndclassex.lpfnWndProc   = WndProc;
       wndclassex.cbClsExtra    = 0;
       wndclassex.cbWndExtra    = 0;
       wndclassex.hInstance     = hInstance;
       wndclassex.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
       wndclassex.hCursor       = LoadCursor (NULL, IDC_ARROW);
       wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
       wndclassex.lpszMenuName  = NULL;
       wndclassex.lpszClassName = szAppName;
       wndclassex.hIconSm       = wndclassex.hIcon;
    
       if (!RegisterClassEx (&wndclassex))
       {
          MessageBox (NULL, TEXT ("RegisterClassEx fehlgeschlagen!"),
                      szAppName, MB_ICONERROR);
          return 0;
       }
    
       hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, 
                      szAppName, 
                      TEXT ("Hallo"), 
                      WS_OVERLAPPEDWINDOW, 
                      CW_USEDEFAULT, Fensters                      
                      CW_USEDEFAULT,    
                      CW_USEDEFAULT,                
                      CW_USEDEFAULT,             
                      NULL, 
                      NULL,         
                      hInstance,            
                      NULL); 
    
       ShowWindow (hwnd, iCmdShow);
       UpdateWindow (hwnd);
    
       while (GetMessage (&msg, NULL, 0, 0))
       {
          TranslateMessage (&msg);
          DispatchMessage (&msg);
       }
       return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
       HDC hdc;
       PAINTSTRUCT ps;
       static HWND hEdit1;
       static HWND hButtonAN;
    
       char szBuffer[100];
       TCHAR *Text1 = NULL;
       TCHAR *Text2 = NULL;
       TCHAR *Text3 = NULL;
    
       switch (message)
       {
    	   int iIndex;
    
       case WM_CREATE:
    	   //EDITFELDER
    
    	   hEdit1 = CreateWindow(TEXT ("edit"),Text1,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_MULTILINE,150,100,200,25,hwnd,(HMENU)ID_EDIT,((LPCREATESTRUCT)lParam) ->hInstance,NULL);
    
    	   ifstream data("dict.txt");
    
          return (0);
    
       case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps);
    
          TextOut (hdc, 210, 50, "Hallo", 50);
          EndPaint (hwnd, &ps);
          return (0);
    
       case WM_DESTROY:
          PostQuitMessage (0);
          return (0);
       }
    
       return DefWindowProc (hwnd, message, wParam, lParam);
    
    }
    


  • Nochmal zu dem Können von C++ ...
    Ich will nicht sagen das ich ein Profi bin und man lernt nie aus ^^ aber können tue ich das ich habe das Prog ja schon in C++ geschrieben aber ich möchte jetzt gerne eine grafische Oberfläche dazu schreiben....^^
    und sorry das ich dich falsch verstanden habe denn das sah ein bisschen aus wie ein Konsolen-Programm...


Anmelden zum Antworten