Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Str_Copy Befehl Kategorie: Programmierung Basic (von Tobias - 13.03.2020 8:36)
Als Antwort auf Re: Str_Copy Befehl von Carlo - 12.03.2020 18:16

> Hallo allseits !
>
> Ich bin da schon wieder auf was Seltsames gestoÃ?en ....
> Wie schon so oft mit dem IDE für den Mega128.
> Bin halt ein bisi spät dran, der Mega128 ist nicht mehr populär ...
>
> Das Str_Copy verhält sich nicht so, wie es in der Hilfe steht.
>
> Str_Copy(destination, source , offset)
> offset  Anzahl der Zeichen, um die der Quellstring, verschoben auf den Zielstring kopiert wird.
>
> Hat offset den Wert STR_APPEND (ffff Hex), so wird als offset die Länge des Zielstrings angenommen.
>  In diesem Fall wird der Source String hinter den Destination String kopiert.

>
> 1) Wenn ich das STR_APPEND als offset einsetze, wird
>     source an destination angefügt. Soweit so gut !
> 2) Wenn ich 0 als offset einsetze, dann wird  ebenfalls
>    source an destination angefügt. Soweit so nochmals gut !
> 3) Jede andere Zahl als offset ergibt einen leeren destination. <<<<--- Das verstehe ich nicht,
> sollte doch mit offset "der Quellstring, verschoben auf den Zielstring kopiert" werden, siehe oben.
>
> Momentan hab ich das Problem so gelöst, dass ich source auf einen EEprom lade und dann die
> gebrauchten Zeichen extra rauslese.
>
> Danke jedem, der mir weiterhilft.
> LG, carlos


Hallo Carlos,

du schreibst:

> 2) Wenn ich 0 als offset einsetze, dann wird  ebenfalls
>    source an destination angefügt. Soweit so nochmals gut !


Das ist aber nicht gut. Mit '0' soll es doch nicht angefügt werden sondern den Destination-String
ab Pos. 0 überschreiben.

Ich habe mal ein paar Zeilen ausprobiert. Bei mir funktioniert die Funktion wie sie soll:


void main(void)
{
    char str_dest[19];
    char str_source[10];
    byte i;

    str_source="123456789";
    str_dest="abcdefghi";

    Msg_WriteText(str_source);
    Msg_WriteChar(13);
    Msg_WriteText(str_dest);
    Msg_WriteChar(13);
    Msg_WriteChar(13);

    Msg_WriteText("Offset '0':r");
    Str_Copy(str_dest,str_source,0);
    Msg_WriteText(str_dest);
    Msg_WriteChar(13);
    Msg_WriteChar(13);

    str_source="123456789";
    str_dest="abcdefghi";
    Msg_WriteText("Offset 'STR_APPEND':r");
    Str_Copy(str_dest,str_source,STR_APPEND);
    Msg_WriteText(str_dest);
    Msg_WriteChar(13);
    Msg_WriteChar(13);

    Msg_WriteText("Offset '0-9':r");
    for(i=0;i<10;i++)
    {
    str_source="123456789";
    str_dest="abcdefghi";
    Str_Copy(str_dest,str_source,i);
    Msg_WriteText(str_dest);
    Msg_WriteChar(13);
    }
}


Als Ausgabe erhalte ich dann:


123456789                                                                                                              
abcdefghi                                                                                                              
                                                                                                                       
Offset '0':                                                                                                            
123456789                                                                                                              
                                                                                                                       
Offset 'STR_APPEND':                                                                                                    
abcdefghi123456789                                                                                                      
                                                                                                                       
Offset '0-9':                                                                                                          
123456789                                                                                                              
a123456789                                                                                                              
ab123456789                                                                                                            
abc123456789                                                                                                            
abcd123456789                                                                                                          
abcde123456789                                                                                                          
abcdef123456789                                                                                                        
abcdefg123456789                                                                                                        
abcdefgh123456789                                                                                                      
abcdefghi123456789


Viele Grü�e,
Tobias


    Antwort schreiben


Antworten:

Re: Str_Copy Befehl (von Carlo - 13.03.2020 19:23)
Re: Str_Copy Befehl (von Tobias - 13.03.2020 10:38)