Announcement

Collapse
No announcement yet.

Komplettes Array eins "nach links" verschieben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Komplettes Array eins "nach links" verschieben?

    Hi!<br>
    <br>
    Ich habe ein selbstdefiniertes Arry als buffer in verwendung (Array[0..511] of Char) nun möchte ich den Inhal des gesamtem Array um eine Position nach links schieben weil das erste Char im Arry erst viel Später gesetzt werden kann... geht das mit einem einfach befehl oder muss man sich was anderes überlegen... MfG Benny

  • #2
    Hi Benny!<br>
    Das Verschieben geht so:
    <pre class="sourcecode"><code>
    <b>var</b>
    arr: <b>array</b>[0..511] <b>of</b> Char;
    i: Integer;
    <b>begin</b>
    <font color="#003399"><i>// Testbef&#252llung:</i></font>
    <b>for</b> i := Low(arr) <b>to</b> High(arr) <b>do</b>
    arr[i] := Chr(i <b>mod</b> 256);
    <font color="#003399"><i>// Um eins nach links verschieben:</i></font>
    Move(arr[1], arr[0], Pred(Length(arr)) * SizeOf(arr[0]));
    <b>end</b>;
    </code></pre>
    Wenn aber das einzige Problem darin besteht, den ersten Platz bis "viel später" frei zu lassen, dann befülle halt dein Array ersteinmal ab Index 1. Index 0 kannst du dann zum Schluss immer noch setzen.
    <p>Ciao, Uli

    Comment


    • #3
      Hi Ulrich!<br>
      <br>
      Danke für die Hilfe... war gestern schon spät... ich meinte eigendlich eins nach rechts schieben... sorry... ;-)<br>
      <br>
      habe also nun<br>
      <br>
      Move(bufTMP[0], bufTMP[1], SizeOf(bufTMP));
      <br>
      <br>
      genommen...<br>
      Was hat es mit der Berechnung auf sich?<br>
      Pred(Length(arr)) * SizeOf(arr[0])<br>
      <br>würde mich freuen eine kurze Antwort zu finden.<br>
      <br>
      MfG Benn

      Comment


      • #4
        Falsch!<br>
        Move(bufTMP[0], bufTMP[1], SizeOf(bufTMP)<b>-1</b>)

        Comment


        • #5
          Dies berechnet die Laenge eines dynamischen Arrays in Byte egal wieviele Bytes ein Element hat.<br>
          SizeOf(arr[0]) ist die Groesse eines Elementes in Byte. Ein dynamisches Array beginnt immer bei 0. Da der Compiler das SizeOf ausrechnet, ist es aber unwichtig ob das Element wirklich existiert.<br>
          Length(arr) ist die Anzahl Elemente des Arrays.<br>
          Pred() entspricht dem -1 das ich dir schon als Fehler angekreidet habe

          Comment


          • #6
            Hi Robert und Ulrich!<br>
            <br>
            Vielen Dank für die Antworten!!!<br>
            <br>
            Ich habe mir nun zwei Funktionen erstellt... ist ja nicht viel bei wenn man weiß wie und da hab klar den Vorteil. ;-)<br><br>
            Ich bedanke mich denn so kann ich nun mein Projekt fortsetzen...<br><br>
            MfG Benn

            Comment

            Working...
            X