Brauche Hilfe bei Button und INI Datei



  • Ich weiß nicht, ob ich das jetzt richtig verstanden habe, aber ich denke so könnte es das machen was du willst:

    do
    {
     sprintf (buffer, "%d", i);
     GetPrivateProfileString ("EDC", buffer, "NONE", szStrings, sizeof (szStrings), "c:\\utm.ini");
     i++
    }
    while(lstrcmp(szStrings,"NONE") != 0)
    

    Danach sollte dann in i der erste noch unbelegte Index stehen...



  • Danke genau das hab ich gesucht! Jetzt Funtzt!



  • Hallo wollte für meine Frage keinen neuen Thread aufmachen. Wollte nur wissen wie man die Daten in ein Listenfenster bekommt. Hab nämlich keinen Plan wie das gehen sollte. Mit GetWindowText kann man den Text ermitteln. Ist das die Funktion die ich brauche oder gibt es für so was eine andere Funktion. Oder muss ich mir die Funktion selber zusammen basteln.

    Könnt ihr mir da etwas weiter Helfen. Danke im Voraus! BlackFalcon





  • Danke aber das Hilft mir auch nicht gerade weiter. Mein Englisch ist nämlich nicht so gut. Ich kann schon Englisch aber dieses Englisch versteh ich fast nicht. Ich muss wohl erstmal Computer Fach Englisch lernen wenn ich Programmieren möchte. Kannst du mir es nicht einbisschen Erklären ListView_EditLabel heißt so viel wie Schau im Listenfeld nach oder Irre ich mich jetzt? Danke erstmal für die Unterstützung Mfg. BlackFalcon



  • Wenn du mit einem ListView arbeitest, dann gibt es hier passenden Beispielcode...

    Du solltest auf jeden Fall über mit der MSDN-Library umzugehen und dich ein wenig zurecht zu finden, denn dort findest du eigentlich fast alles, was du brauchst (naja vielleicht nicht alles, aber auf jeden Fall eine ganze Menge) 🙂



  • Was wäre denn der Einfachere Weg? Hab mir die MSDN schon min. 2 mal angeschaut und werde einfach nicht daraus schlau! Derjenige der mir den Auftrag gegeben hat, hat gemeint ich könnte es mal mit einem Edit Fenster ausprobieren. Noch eine Bemerkung. Ich bin noch ziemlicher Anfänger in der Windowsprogrammierung. MFG. BlackFalcon



  • Um dir zu sagen, welches Control wohl am besten geeignet wäre, müsste man erstmal wissen, was genau du überhaupt vorhast bzw. was das Control leisten soll...



  • Oh sorry! Also das Controll soll folgendes leisten: Er soll die Daten die ich Eingeben habe mir in diesem Feld wieder ausgeben. In etwar so

    ------------
    | [EDC] |
    | 1=xyz |
    | 2=abc |
    ------------

    Verstehst du jetzt was ich meine!
    MFG BlackFalcon



  • OK, wenn du einfach nur deine Datei dort ausgeben willst, nimmst du am besten ein EDIT-Control und setzt ES_MULTILINE
    Du kannst entweder deinen ganzen Text auf einmal einfügen (WM_SETTEXT bzw. SetWindowText), oder stückweise (wie du das anstellst, findest du hier).



  • Habe mir für die 1. Methode entschieden alles auf einmal Auszugeben. Jetzt das Edit Feld so Definiert das im Edit Feld jetzt die Variable ES_MULTILINE Drinnensteht. und mit dem ID_READ eine neue case gestartet habe und mit SetWindowText() in das Edit Feld eintrage. So jetzt kommt aber immer nur 1. Hyroglyp "ζ" so ein ähnliches Zeichen und das glaub ich so viel wie in dem Array szString platz haben. Was ist noch zu tun ich schicke euch (dir) vielleicht mal den Source Code mit.

    hEdit1 = CreateWindow ("edit", NULL, 
    				WS_BORDER | WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | ES_MULTILINE, 
    				180, cxClient / cyClient + 30, cxClient, cyClient * 10, hwnd, 
    				(HMENU) ID_LIST, ((LPCREATESTRUCT) lParam)->hInstance, NULL);
    
    TCHAR szString[1024];
    
    case ID_READ:
    			ShowWindow (hEdit1, TRUE);
    			SetWindowText (hEdit1, szString);
    			break;
    

    Mfg. BlackFalcon



  • Da fehlt aber zwischendrin noch ein Befehl, der deine Daten liest und in szString einträgt. (das Array ist noch unberührt, also steht dort irgendwelcher Datenmüll drin)



  • szString wird eingelesen und zwar mit dem Befehl WritePrivateProfileString() und mit GetPrivateProfileString() in die Datei eingetragen. Jetzt steht immer wenn ich auf Lesen Drücke diese kommische Zeichen und dahinter noch ein Text das mit einer anderen Variable vereinbart hab. Mfg. BlackFalcon



  • Ich dachte, du willst einfach die ganze ini-Datei in deinem Edit ausgeben? Also müsstest du sie ganz normal mit den Datei-Funktionen (z.B. ReadFile) einlesen und nicht mit GetPrivateProfileString (das brauchst du nur, wenn du sie parsen lassen willst) 🙄



  • Ich bin halt noch Anfänger 😃 . Ich kenn mich halt nicht noch so gut aus wie ihr. Nochmal von ganz von forne. Ich hab jetzt ein Edit Feld in das Edit Feld soll dann drinnen stehen die Daten die ich bereits eingeben habe. Mit ReadFile hab ich keinerlei erfahrung gemacht. 😞 Schon langsam ärgert mich das. Ihr wollt mir nur Helfen und ich versteh nichts vom Programmieren. Ich glaub ich muss mich nochmal zuhause dahinter klemmen wie das gehen könnte. Ich glaub ich lass es fürs erste bleiben und schau das ich es zuhause oder in der Firma irgendwie Schafe. Danke noch mal für eure Unterstützung



  • Es ist halt etwas schwierig dir konkret zu helfen, wenn nicht ganz klar ist, was du genau haben willst. Du sagtest:

    BlackFalcon schrieb:

    Habe mir für die 1. Methode entschieden alles auf einmal Auszugeben.

    und dann jetzt wieder:

    BlackFalcon schrieb:

    szString wird eingelesen und zwar mit dem Befehl WritePrivateProfileString() und mit GetPrivateProfileString() in die Datei eingetragen.

    Aber das auslesen mit GetPrivateProfileString machst du ja schrittweise in einer for Schleife 😕

    Willst du jetzt einfach alles, was in der ini Datei steht in ein Edit schreiben, oder irgendwas anderes?!



  • Ja so inetwar nur soll halt der Abschnitt [EDC] im Edit Fenster stehen. z.B.
    in der ini Datei steht volgendes:
    [EDC]
    1=xyz
    2=abc

    im Edit Feld soll dann genau das selbe stehen
    [EDC]
    1=xyz
    2=abc

    Verstehst du mich jetzt Besser? Mfg. Thomas



  • Hab dir mal schnell was zusammengebastelt:

    hWndEdit = CreateWindowEx(...);
    
    int i = 1;
    char buffer[1024];
    char szStrings[1024];
    Edit_AddText(hWndEdit,"[EDC]\r\n");
    do
    {
     wsprintf (buffer, "%d", i);
     GetPrivateProfileString ("EDC", buffer, "NONE", szStrings, sizeof (szStrings), "c:\\utm.ini");
     if(lstrcmp(szStrings,"NONE") == 0) break;
     wsprintf(buffer, "%d=%s\r\n", i, szStrings);
     Edit_AddText(hWndEdit,buffer);
     i++;
    }
    while(true);
    

    Edit_AddText ist die Funktion, auf die ich weiter oben schon verlinkt habe...



  • Morgen! Das mit dem Edit_AddText() Befehl klappt schon recht gut jetzt hab ich nur noch ein Problem. Er schreibt mir die einträge doppelt und dreifach in das Edit Fenster! z.B.:

    Beim ersten Drücken der Schaltfläche:
    [EDC]
    1=abc
    2=def

    Beim zweiten mal Drücken der Schaltfläche:
    [EDC]
    1=abc
    2=def
    1=abc
    2=def
    3=ghi

    Möchte das so haben
    Erster Buttonklick
    [EDC]
    1=abc
    2=def

    Zweiter Butttonklick in Edit Feld schreiben
    [EDC]
    1=abc
    2=def
    3=ghi

    Sorry das ich vorhin mich so unklar ausgedrückt habe. Würde das mit dem Befehl Edit_InsertLine() nicht auch gehen? Aber wie ich muss ich dann den zweiten Parameter setzen? Wenn ich diesen Befehl verwende?! Oder würde es mit dem Edit_AddText() Befehl auch gehen? Mfg BlackFalcon

    P.S.: Ich hab sogar versucht die Befehle Außerhalb der Schleife zu setzen und noch so ähnliche sachen.



  • Mit Edit_InsertLine könntest du das natürlich auch machen, aber da du ja immer nur am Ende Daten anhängen willst, so wäre das etwas oversized. Dein Problem ist scheinbar, dass du die while-Schleife bei jedem Button-Klick erneut ausführst, was nicht sinnvol ist. Wenn du einmal die Zahl ermittelt hast, di in der ini-Datei als nächstes kommt, dann brauchst du ja nur noch diesen Zähler mit den Button-Klicks entsprechend hochzuzählen und immer nur die neu eingetragenen Daten mit Edit_AddText anzuhängen.


Anmelden zum Antworten