umwandeln von Tchar* nach Tchar[]



  • _tcscat( mystring, buf )
    

    Wenn du mystring vorher mit '\0' initialisiert hast.



  • also ich versuche mich ja wirklich nicht dumm anzustellen 😕 .. aber irgednwie klappt das nicht.

    initialisieren mit '\0':

    --> TCHAR* mystring [1024] = _T('\0');;
    --> Fehler: cannot convert from 'const unsigned short' t
    o 'unsigned short *[1024]'

    vorschlag: _tcscat( mystring, buf );

    --> fehler: cannot convert parameter 1 from 'unsigned short *[
    1024]' to 'unsigned short *'

    ich hoffe ihr habt noch geduld mit mir !!

    danke euch vielmals !



  • brian_t schrieb:

    --> TCHAR* mystring [1024] = _T('\0');;

    Ach, mystring ist jetzt ein Array von TCHAR-Zeigern? Das hättest du erwähnen müssen.
    Du musst aber nicht jede Zeile in einem eigenen Puffer speichern.

    Wenn du das aber tun willst, musst du für jede Zeile einzeln Speicher reservieren.



  • ne ich muss nicht reservieren oder sonstiges.. das einzige was ich möchte ist. das ich den text aus der datei auslesen kann und ihn (komplett) in einer TCHAR variablen ablegen kann.

    damit ich ihn mit Drawtext ausgeben kann. bei meinem alten code habe ich die variable immer wieder überschrieben und hatte somit nur den letzten wert in der variable.

    also alles muss rein. egal wie. aber scheint ja nicht so einfach zu sein 😕

    hast du noch ne idee ??

    danke dir !



  • brian_t schrieb:

    ne ich muss nicht reservieren oder sonstiges..

    Doch, musst du bei einem Array von Zeigern. Die sind sonst uninitialisert, d.h. sie zeigen irgendwo hin.

    brian_t schrieb:

    das einzige was ich möchte ist. das ich den text aus der datei auslesen kann und ihn (komplett) in einer TCHAR variablen ablegen kann.

    In eine TCHAR-Variable passt genau ein Zeichen. Könnte knapp werden. Du wirst schon ein Array brauchen.

    brian_t schrieb:

    also alles muss rein. egal wie. aber scheint ja nicht so einfach zu sein 😕

    Doch, eigentlich schon. Du hast schon zu viel geändert. Lass mystring wie es war, als Array von TCHAR, mach es groß genug, dass die ganze Datei reinpasst, initialisier es ordentlich, und dann benutz _tcscat.



  • ok.. soweit hab ich alles denke ich. nur bei dem initialisieren weiss ich nicht weiter. denke auch das da der grund liegt warum mein programm immer abstürzt.

    TCHAR* mystring  [1500];
    ....
     FILE* fp;
      int i = 0;
      TCHAR buf[1500];
      TCHAR *c;
    
      fp=_tfopen(_T("My Documents/scan.txt"),_T("r"));
    
    	if (fp != NULL){
    
    		while(_fgetts(buf,sizeof buf,fp))
    		{
    			_tcscat(mystring[i], buf);	
    		} 
    	}
    fclose(fp);
    

    ich kenne die initialisierung von array nur so.. und anders habe ichs im netz auch nicht gefunden:

    test[3] = {1,2,3};

    aber wie soll ich das ganze mit 1500 zeichen initialisiern ? oder ne schleife basteln die durchläuft?

    danke !!



  • TCHAR ist immer noch ein Array von Zeigern. Und lass den Quatsch mit [i].

    TCHAR mystring [1500] = _T("");
    


  • jau wunderbar 🙂 läuft !!

    brauch noch ne ganz kurze info.. wollts eig selbst lösen. aber so recht scheint das nicht zu klappen.

    also der funktionsaufruf zum auslesen der datei kommt ziemlich oft. und momentan schreibt er ja immer wieder was dran an mystring. also läuft die variable voll und das programm stürzt ab.

    was ist sinnvoller. die variable global zu lassen und nach der ausgabe über drawtext das tchar array zu löschen. (wenn ja wie lösch ich das ^^).

    oder sinnvoller die variable in der funktion jedes mal neu zu initialisieren und mystring über return zurück zu geben ?

    danke !!



  • brian_t schrieb:

    also der funktionsaufruf zum auslesen der datei kommt ziemlich oft.

    Muss er das denn? Sprich: Ändert sich der Dateiinhalt?

    brian_t schrieb:

    und momentan schreibt er ja immer wieder was dran an mystring. also läuft die variable voll und das programm stürzt ab.

    Dann "lösch" das Arrays vorher wieder:

    mystring[0] = '\0';
    

    brian_t schrieb:

    was ist sinnvoller. die variable global zu lassen und nach der ausgabe über drawtext das tchar array zu löschen.

    Löschen nach der Ausgabe ist Blödsinn. Lösch vor dem nächsten Einlesen.

    brian_t schrieb:

    oder sinnvoller die variable in der funktion jedes mal neu zu initialisieren und mystring über return zurück zu geben ?

    Arrays können nicht Rückgabewerte sein.



  • perfekt !
    wieder was dazu gelernt 🙂

    VIELEN DANK !!!

    hätte ich sonst nie geschafft 😘 !!!

    danke, danke 🙂


Anmelden zum Antworten