AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C-Funktion mit Pointern in Delphi nachbilden

Ein Thema von oXmoX · begonnen am 1. Jul 2005 · letzter Beitrag vom 4. Jul 2005
Antwort Antwort
NicoDE
(Gast)

n/a Beiträge
 
#1

Re: C-Funktion mit Pointern in Delphi nachbilden

  Alt 1. Jul 2005, 15:55
Spontanübersetzung (ohne Delphi, Syntaxfehler möglich)
Delphi-Quellcode:
procedure cvmSet(mat: P_CvMat; i, j: Integer; val: Double); {inline;}
type
  PDoubleArray = ^TDoubleArray;
  TDoubleArray = array [Word] of Double;
begin
  PDoubleArray(Cardinal(mat.data.ptr) + Cardinal(mat.step) * i)[j] := val;
end;
mat->data.ptr ist ein Zeiger auf Elemente der Größe 1, dadurch wird für die Addition Faktor 1 verwendet (also ignoriert ).
-> in Delphi können Pointer so nicht addiert werden, deswegen der Cast auf Cardinal

(size_t)mat->step*i step wird auf einen vorzeichenlosen Typen gecastet (hart, old-style) und mit i multipliziert (warum i nicht gecastet wird weiß nicht )
-> das gleiche auch in Delphi Language

((double* )(...))[j] das ganze wird auf einen Zeiger auf Doubles gecastet und mit dem Array-Operator auf dem j-te Element zugegriffen
-> in Delphi kann der Array-Operator so nicht verwendet werden (es gibt keinen ); deswegen wird ein Hilfstyp definiert und verwendet

Gruß Nico

ps: kommt also auf etwa das gleiche raus wie bei dir (bsi auf 'var' und die Zwischenschritte) - bleibt die Frage nach dem Problem...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz