dc.TextOut Ausgabe eines Array's



  • Hallo zusammen,
    irgendwie komme ich nicht so recht weiter. Und bräuchte mal bitte kurz Hilfe..
    Also ich möchte in einem Koordinatensystem automtisch Einteilungsstriche anbringen, das funktioniert auch.
    Unter den Strichen soll auch noch automatisch ein Text stehen, den schreibe ich hier in bez rein.
    Jedoch werden mir nur Hiroglyphen ausgegeben. Habe sämtliche Sachen versucht aber irgendwie bekomme ich es nicht hin... Aber das kann doch nicht so schwer sein...

    int z=250;
    	for(z;z<=900;z=z+200)
    	{
    	dc.MoveTo(z,180);
    	dc.LineTo(z,190);
    
    	CString bez1;
    	char bez[5];
    	bez[0] = 'T';
    	bez[1] = 'TT';
    	bez[2] = 'X';
    	bez[3] = 'Y';
    //	bez[4] = '\0';
    
    		int h=0;
    		for(h;h<=4;h++)
    		{
    		bez1.Format("%c",bez[h]);
    		dc.TextOut(z,200,bez1);
    		}
            }
    

    Danke schonmal...



  • TextOut( int x, int y, const CString **&**str);



  • Erstmal Danke..
    Habe es jetzt so versucht,

    CString bez1;
    	char bez[5];
    	bez[0] = 'T';
    	bez[1] = 'TT';
    	bez[2] = 'X';
    	bez[3] = 'Y';
    //	bez[4] = '\0';
    
    		int h=0;
    		for(h;h<=4;h++)
    		{
    		bez1.Format("%c",bez[h]);
    		dc.TextOut(z,200,const CString &bez1);
    

    und dann gibt er mir folgendenen Fehler:

    View.cpp(192) : error C2059: Syntaxfehler : 'const'
    

    Hatte CString in Zeile 1 auch mal als const deklariert, aber er meckert trotzdem...



  • na das dein CString inhaltlich nicht stimmt sollte dir schon klar sein, weil dieser ja mit deiner Methode nicht auf NULL Terminiert wird. das Zweite problem ist das du alle Buchstaben auf die gleiche Stelle Printest wenn du

    dc.TextOut(z+h*20,200,const CString &bez1);
    

    mal Versuchst (is ne schnelle Methode un so net wirklich richtig) wirste sehen das deine Buchstaben nebeneinander stehen.

    mein schneller Vorschlag wenn du unbedingt mit deinen char Variablen arbeiten willst

    int z=250;
    		for(z;z<=900;z=z+200)
    		{
    		dc.MoveTo(z,180);
    		dc.LineTo(z,190);
    
    		CString bez1;
    		char bez[5];
    		bez[0] = 'T';
    		bez[1] = 'T';
    		bez[2] = 'X';
    		bez[3] = 'Y';
    
    			int h=0;
    			for(h;h<4;h++)
    				bez1 += bez[h];
                            dc.SetBkMode(TRANSPARENT);  //der Hintergrund des Textes ist Transparent
    			dc.TextOut(z,200,bez1);
    		}
    


  • CTecS schrieb:

    na das dein CString inhaltlich nicht stimmt sollte dir schon klar sein, weil dieser ja mit deiner Methode nicht auf NULL Terminiert wird. das Zweite problem ist das du alle Buchstaben auf die gleiche Stelle Printest wenn du

    jaa dessen bin ich mir bewusst...

    CString bez1;
    	char bez[5];
    	bez[1] = 'T';
    	bez[2] = 'ABCD';
    	bez[3] = 'X';
    	bez[4] = 'Y';
    
    		int h=1;
    		for(h;h<=4;h++)
    		{
    		bez1 += bez[h];
    		dc.SetBkMode(TRANSPARENT);
    		dc.TextOut(z,0.25*h+20,bez1);
    

    Das ist ja schon mal nen kleiner Fortschritt jetzt... 🙂 Nur der Inhalt bez[] sollte jeweils einer Position zugeordnet werden, mit dem z aus der Schleife davor also immer um 200 weiterspringen.. bez[1]=> Pos x200; bez[2]=> Pos x400 etc.
    Und ich mache ja quasi jetzt ein Wort daraus, durch die Addition, wobei er von bez[2] auch nur D ausgibt und den Rest verschluckt...
    Und ich bin keineswegs mit dem char verheiratet, nur wusste ich mir nicht anders zu helfen..


  • Mod

    @higginator:
    Wie wäre es wenn Du erstmal ein paar weitere Grundlagen zu C++ lernst?
    BTW: Arrays beginnen bei 0! DC sollte man nicht in Schleifen initialisieren wenn man es nicht muss. Über Koordinaten slltest Du auch mal nachdenken.

    Du hats hir char's! Und denen kanst Du keinen String zu weisen...
    Dieser Code ist zwar idotisch aber ich korrigiere ihn mal.

    CString bez1;
    const char *bez[4];
    bez[0] = "T";
    bez[1] = "ABCD";
    bez[2] = "X";
    bez[3] = "Y";
    
    dc.SetBkMode(TRANSPARENT);
    for(int h=0;h<_countof(bez);++h)
    {
        bez1 += bez[h];
        dc.TextOut(z,0.25*h+20,bez1);
    ...
    


  • Danke hat sich somit geklärt..

    Martin Richter schrieb:

    @higginator:
    Wie wäre es wenn Du erstmal ein paar weitere Grundlagen zu C++ lernst?
    BTW: Arrays beginnen bei 0! DC sollte man nicht in Schleifen initialisieren wenn man es nicht muss. Über Koordinaten solltest Du auch mal nachdenken.

    Das wäre definitiv gut und da bin ich ja gerade bei nur gestaltet es sich ab und an mal recht holperig.. 🙂


Anmelden zum Antworten