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
 
oXmoX

Registriert seit: 8. Jun 2005
85 Beiträge
 
#1

C-Funktion mit Pointern in Delphi nachbilden

  Alt 1. Jul 2005, 15:32
Hi!

Die folgende C-Funktion möchte ich äquivalent in Delphi abbilden:

Code:
CV_INLINE void cvmSet( CvMat* mat, int i, int j, double val )
{
    ((double*)(mat->data.ptr + (size_t)mat->step*i))[j] = (double)val;
}
CvMat ist eine Matrix-Struktur (siehe unten), dessen Elemente mit der Funktion einzeln belegt werden sollen. i ist die Zeile, j die Spalte und val der einzutragende Wert.

Hier mein Versuch:

Code:
procedure cvmSet(var mat: P_CvMat; i: Integer; j: Integer; val: Double);
var
  PTmpDouble: PDouble;
begin
  PTmpDouble := PDouble(PChar(mat.data.ptr) + mat.step * i);
  Inc(PTmpDouble, j);
  PTmpDouble^ := val;
end;
Die CvMat-Struktur habe ich durch die Hilfe von NicoDE in diesem Topic ja schon umgesetzt bekommen. Vielen Dank nochmal dafür!

Code:
type
  P_CvMat = ^CvMat;
  CvMat = record
    type_       : Integer;
    step       : Integer;
    (* for internal use only *)
    refcount   : PInteger;
    data       : record
      case Integer of
        0: (ptr : PByte);
        1: (s  : PSmallInt);
        2: (i  : PInteger);
        3: (fl : PSingle);
        4: (db : PDouble)
    end;
    case Integer of
      0: (rows : Integer);
      1: (height: Integer;
    case Integer of
      0: (cols : Integer);
      1: (width : Integer))
  end;
Das Step steht für die Breite einer Martixzeile in Bytes. ptr zeigt auf den Inhalt.

Mein Problem besteht nun darin, dass ich die Elemente einer 3x3-Matrix mit Werten belege und dann wieder auslese, wobei sich die Werte komplett verändert haben.

Irgendeine Idee?

Gruß,
oXmoX
  Mit Zitat antworten Zitat
 


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 21:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz