Announcement

Collapse
No announcement yet.

C -> Delphi

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

  • C -> Delphi

    Generell ist "array of" in Konversionen zu vermeiden. Weniger im Sinne das es falsch ist, als das die meisten Programmierer die dann noetigen Abweichungen von einer einfachen Konversion nicht meistern

  • #2
    C -> Delphi

    Hi,<br>
    ich kämpfe gerade mit einer Übersetzung von
    Ansi C nach Delphi (Punycode RFC 3492).

    Da lautet eine Codezeile:
    <pre>
    memmove(output + i + 1, output + i, (outp - i) * <b>sizeof</b> *output);
    </pre>

    ...die ich mit...

    <pre>
    move(output[i], output[i + 1], (outp - i) * Length(output));
    </pre>

    ... übersetzt habe, wobei <pre>output</pre> als Funktionsparameter folgendermaßen deklariert ist:

    <pre>
    var output: Array of longint;
    </pre>

    Witzigerweise scheint der Rückgabewert OK zu sein. Doch nach Anzeige des Rückgabewertes aus meiner Funktion werden mir diverse Zugriffverletzungen um die Öhrchen gehauen :-(

    Kommentiere ich <pre>move()</pre> aus, passiert das nicht.

    Nun meine Frage: Gibt es bei <pre>move()</pre> irgendetwas zu beachten?

    Hat jemand eine Idee, wie das Problem zu vermeiden ist?

    TIA
    Ollo

    Comment


    • #3
      Der dritte Parameter ist falsch. SizeOf(output[0]) ist korrekt. Was sonst als die Groesse eines einzelnen Elementes soll es denn sein.<br>
      Vorher muss natuerlich mit SetLength output alloziiert werden, sonst geht alles schief

      Comment

      Working...
      X