text ein/auslesen?



  • Weil erstmal der zu lesende Bereich selektiert werden muß:

    // Text an die Editbox anhängen:
    // an das Ende springen
    SendMessage (edbx, EM_SETSEL, (WPARAM)-2, (LPARAM)-2); 
    // Text anhängen
    SendMessage (edbx, EM_REPLACESEL, (WPARAM)0 , (int)string);
    
    // text aus der editbox holen:
    SendMessage (edbx, WM_GETTEXT, sizeof(string), (int)string);
    // text in die editbox setzen:
    SendMessage (edbx, WM_SETTEXT, sizeof(string), (int)string);
    // allen Text in Editbox ersetzen
    SendMessage (edbx, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
    

    Sind jetzt nur Beispiele, kein vollständiger Code.

    Blackbird



  • So kriegst du den Text:

    int nLen = SendMessage(hwndEdit, WM_GETTEXTLENGTH, 0, 0);
      TCHAR *pText = new TCHAR[nLen +1];
      pText[nLen] = 0; // Macht wahrscheinlich auch das Control selber, aber wir gehen am besten sicher
      SendMessage(hwndEdit, WM_GETTEXT, (WPARAM)nLen+1, (LPARAM)pText);
    


  • reinschreiben:

    bool SaveToFile(char *file, char cont)
    {
    	FILE *tosave;
    	tosave = fopen(file, "w");
    	if(fwrite(&cont , sizeof(cont), sizeof(cont), tosave)) 
    	{
    		return TRUE;
    	}
    	return FALSE;
    }
    

    nur gibts nun nen memory fehler...ich denke das liegt an den sizeofs...was muss da denn rein?



  • - du übergibst nur ein einzelnes zeichen (char) möchtest vermutlich deinen buffer speichern
    - du möchtest binär ein eine datei schreiben die du nicht binär geöffnet hast
    - zweites sizeof ist eigentlich die anzahl der datensätze die geschrieben werden sollen

    // binär
    void SaveToFile(char *pFilename, char *pBuffer, int nSize)
    {
    	FILE *file;
    	if(!(file= fopen(pFilename, "wb")))
               fwrite(pBuffer, nSize, 1, file);
    
            fclose(file);
    }
    
    // normaler text
    
    void SaveToFile(char *pFilename, char *pBuffer)
    {
    	FILE *file;
    	if(!(file= fopen(pFilename, "w")))
               fprintf(file, "%s", pBuffer);
    
            fclose(file);
    }
    

    beides ungetestet



  • if(LOWORD(wParam)==2) 
    		{
    			char toSave = NULL;
    			char Content = NULL;
    			GetWindowText(loadEdit, &toSave, 255);
    			GetWindowText(textField, &Content, 255); 
    			MessageBox(NULL, &Content, &toSave, 0);
    			SaveToFile(&toSave, &Content, sizeof(&Content));
    		}
    

    damit ru fich die funktion auf.

    void SaveToFile(char *pFilename, char *pBuffer, int nSize) 
    { 
        FILE *file; 
        if(!(file= fopen(pFilename, "wb"))) 
               fwrite(pBuffer, 1, nSize, file); 
    
            fclose(file); 
    }
    

    das ist die funktion. oft wird zwar ne datei erstellt, deren name ist aber nur ein buchstabe oder ein wirrwar von zeichen, aussdem enthält sie nichts! ?!?!?! 😞



  • habs fast perfekt hingekriegt ^^



  • pixartist schrieb:

    char toSave = NULL;
    char Content = NULL;
    GetWindowText(loadEdit, &toSave, 255);
    GetWindowText(textField, &Content, 255); 
    MessageBox(NULL, &Content, &toSave, 0);
    SaveToFile(&toSave, &Content, sizeof(&Content));
    

    Du solltest dich mal mit Speicher-Reservierung und Pointern beschäftigen - da wird einem ja schon fast schlecht 😮



  • ...ein Wunder das er nicht auch noch vor die Zahlenkonstanten ein '&' gemacht hat 😮



  • Seid nicht so eklig zu ihm. Jede war mal ein Anfänger 😃



  • menno 😞 wenn die doh alle nur zeiger wollen 😡
    😃

    edit btw.: das sieht jetzt so aus:

    if(LOWORD(wParam)==2) 
    		{
    			toSave = new char[GetEditTextLength(loadEdit)];
    			Content = new char[GetEditTextLength(textField)];
    			if(GetEditTextLength(loadEdit) != 1) 
    			{
    				GetWindowText(loadEdit, toSave, GetEditTextLength(loadEdit));
    				GetWindowText(textField, Content, GetEditTextLength(textField)); 
    				SaveToFile(toSave,Content, sizeof(Content));
    			}
    			else
    			{
    				if(GetEditTextLength(fileZeiger) != 1)
    				{
    					GetWindowText(fileZeiger, toSave, GetEditTextLength(fileZeiger));
    					GetWindowText(textField, Content, GetEditTextLength(textField)); 
    					SaveToFile(toSave,Content, sizeof(Content));
    				}
    				else
    				{
    					MessageBox(NULL, "Keine Datei angegeben!", "Fehler", 0);
    				}
    			}
    		}
    


  • sizeof(Content) gibt immer 4 zurück - das ist sicher nicht das, was du willst.
    Nimm stattdessen lieber lstrlen(Content) 😉


Anmelden zum Antworten