Problem mit CString SetAt



  • Hallo zusammen,

    Versuche einen char den ich über eine serielle Schnittstelle empfange, einem CString mit SetAt hinzuzufügen. Allerdings bekomme ich dann immer eine Assertion.

    do
    	{
    
    		fehler=ReadFile(serialconn,&dummy,1, &BytesRead, NULL);
    		i++;
    		empfang.SetAt(i,dummy);
    	}
    	while(empfang[i-1]!=suffix);
    

    empfang ist ein CString und dummy ein char. Das müsste doch so gehen??

    Gruß helda


  • Mod

    Für SetAt muss der String bereits groß genug sein. Ist der es nicht fliegt Dir die ganze Sache mit einem ASSERT um die Ohren.
    Also einfach entweder += verwenden oder den Buffer vorher mit GetBuffer oder SetLength groß genug machen.

    Bei += sieht das ganze so aus:

    do
    {
      fehler=ReadFile(serialconn,&dummy,1, &BytesRead, NULL);
      empfang += dummy;
    }
    while(empfang[empfang.GetLength()-1]!=suffix);
    

    BTW: In dieser Form die Daten zu Lesen ist uneffektiv. Lies doch soviel Daten wie Möglich auf einen Schlag!


Anmelden zum Antworten