Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Fehler in mem.copypos? Kategorie: Programmierung (von Detlef - 23.12.2020 12:52)
Als Antwort auf Fehler in mem.copypos? von Detlef - 15.12.2020 18:08
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo nochmal,

ich habe nun herausgefunden, dass copypos wiefolgt funktioniert:

Es kopiert byteweise nacheinander aufsteigend die Anzahl Bytes von der Quelle aufs Ziel.
Im unteren Beispiel liegt das Ziel hinter der Quelle, somit wird immer der gleiche Inhalt
kopiert, erst von Pos auf Pos+1, dann von Pos+1 auf Pos+2 usw. Kopiert man andersherum, also von
Pos auf Pos-1 funktioniert das einwandfrei!
Mir w├╝rde also eine copypos-Funktion fehlen, die genau anders herum funktioniert, also
byteweise, nacheinander absteigend die Anzahl Bytes von der Quelle aufs Ziel kopiert.

Kann jemand das von der mem.copypos Funktion ableiten? Ich kenne mich leider ├╝berhaupt nicht mit
den Inline Funktionen aus.

Beste Gr├╝├če, frohe Weihnachten,

Detlef



> Hallo,
>
> ich ringe mit den Fehlern in einer Funktion, und bin nun der Meinung, dass die Ursache in der
> Funktion mem.copypos liegt.
>
> Nach meinem Verst├Ąndnis m├╝ssten die beiden folgenden Programmzeilen das gleiche Ergebnis bringen.
>
> Es geht darum in einem Array, die letzten Werte um eine Position nach hinten zu verschieben,
> um einen weiteren Wert an der Position einzuf├╝gen. Die zweite Zeile funktioniert einwandfrei,
> die erste f├╝hrt dazu, dass auf den letzten beiden Positionen der vorletzte Wert zweimal abgespeichert
> wird. Vor der Logik her, m├╝sste auch die erste Zeile mit copypos das hinkriegen, tut sie aber nicht.
>
> Dlast = letzter Wert
> Dfirst = erster Wert
> Dpos = aktuelle Position, wo eingef├╝gt werden soll.
>
>
> int a,
> int idxDS[100];
>
> mem.copypos(idxDS,Dpos+1,idxDS,Dpos,Dlast-Dpos);
>
> for a ... (Dlast-Dpos) idxDS[Dlast-a]=idxDS[Dlast-1-a];
>
>

>
> Kann das jemand nachvollziehen?
>
> VG
>
> Detlef


    Antwort schreiben


Antworten: