Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi pointer to an array in D und C++ (https://www.delphipraxis.net/18470-pointer-array-d-und-c.html)

Virchov 19. Mär 2004 09:29


pointer to an array in D und C++
 
Moin!

Ich habe versucht, diese funktion in deplhi zu übersetzen. Alles klappt in die Zeile BinImgPlus[idx]=0; Kann man pointer auf array in Delphi so nicht deklarieren? Ich möchte aber in Delphi die array-Struktur beibehalten. Geht das?

Vielen Dank!

Delphi-Quellcode:

int BinImgMatchProMile(
  const bool* BinImg1,
  const bool* BinImg2,
  int nElements,
  bool* BinImgPlus,
  bool* BinImgMinus)
{
  //local declares
  register idx, MatchCounter=0;

  //calculations
  for (idx=0; idx<nElements; ++idx){
    //local initialisation
    BinImgPlus[idx]=0;
    BinImgMinus[idx]=0;
    //Find out what to do for this element
    if (BinImg1[idx]==BinImg2[idx])
      //Got a match in case BinImg1 == BinImg2
      MatchCounter++;
    else if (BinImg1[idx] && (!BinImg2[idx]))
      //Got positive difference in case BinImg1 > BinImg2
      BinImgPlus[idx]=1;
    else if (BinImg2[idx] && (!BinImg1[idx]))
      //Got negatice difference in case BinImg1 < BinImg2
      BinImgMinus[idx]=1;
    //endif
  }
  return (int)(((float)MatchCounter/(float)nElements)*1000.0);
}

Virchov 19. Mär 2004 09:34

Re: pointer to an array in D und C++
 
Sorry Ich meinte - alles klappt BIS in die Zeie! :oops:

Virchov 19. Mär 2004 10:13

Re: pointer to an array in D und C++
 
Scheisse!

Könnte mir vielleicht doch einen kleinen Tipp geben? Ich bitte nicht darum, die Funktion umzuschreiben, blos wie macht man das in D mit pointer auf array?

Virchov 19. Mär 2004 10:39

Re: pointer to an array in D und C++
 
So ein Mist, alta. Ick wer gleich verrückt! Son Schheissforum! :wall:

BluesKid 19. Mär 2004 10:39

Re: pointer to an array in D und C++
 
Moin moin

Also, ganz sicher bin ich mir da jetzt auch nicht aber versuch doch mal Folgendes:

Delphi-Quellcode:
.
.
.
  type myArray = array[0..10] of String;
  var aArray : myArray;
      myPointer : ^myArray;
.
.
.
begin
  aArray[1] := 'Hallo Welt';
  myPointer := @aArray;
  showmessage(myPointer^[1]);
end;
.
.
.
oder hab ich dich da verstanden-Miss :wink:

schönen Gruß

Sam

Virchov 19. Mär 2004 10:43

Re: pointer to an array in D und C++
 
Danke Dir!

Ichh glaube, du verstandest michh schon richtig. In C wird als übergabeparameter bool* BinImgPlus,
bool* BinImgMinus deklariert und dann, wie du siehst, als arrays verwendet. Delphi lässt das leider nicht. Und deine Lösung mag schon richtig sein, man hat mir sonst auch geraten, Einen Array-Typ zu definieren. ..

Virchov 19. Mär 2004 10:53

Re: pointer to an array in D und C++
 
Geht nicht. Naja, egal , ich probiere mal weiter.

roderich 19. Mär 2004 11:00

Re: pointer to an array in D und C++
 
Zitat:

So ein Mist, alta. Ick wer gleich verrückt! Son Schheissforum!
nicht das Forum ist scheiße, sondern Deine Problembeschreibung (und vermutlich Dein Code).

Roderich

NicoDE 19. Mär 2004 11:47

Re: pointer to an array in D und C++
 
Zitat:

Zitat von Virchov
Son Schheissforum!

Mäßige Dich bitte.

Delphi-Quellcode:
type
  PBooleanArray = ^TBooleanArray;
  TBooleanArray = array [0..High(Integer) - 1] of Boolean;

function BinImgMatchProMile(const BinImg1, BinImg2: TBooleanArray;
  nElements: Integer; out BinImgPlus, BinImgMinus: TBooleanArray): Integer;
  cdecl;
var
  idx: Integer;
  MatchCounter: Integer;
begin
  Result := 0;
  if (nElements > 0) then
  begin
    MatchCounter := 0;
    // calculations
    for idx := 0 to nElements - 1 do
    begin
      // local initialisation
      BinImgPlus[idx] := False;
      BinImgMinus[idx] := False;
      // Find out what to do for this element
      if BinImg1[idx] = BinImg2[idx] then
        // Got a match in case BinImg1 = BinImg2
        Inc(MatchCounter)
      else if BinImg1[idx] and not BinImg2[idx] then
        // Got positive difference in case BinImg1 > BinImg2
        BinImgPlus[idx] := True
      else if BinImg2[idx] and not BinImg1[idx] then
        // Got negatice difference in case BinImg1 < BinImg2
        BinImgMinus[idx] := True;
    end;
    Result := Int64(MatchCounter) * 1000 div nElements;
  end;
end;

kiar 19. Mär 2004 11:53

Re: pointer to an array in D und C++
 
@nicoDE,
wenn ich es gekonnt hätte, hätte ich unwissend gelassen.

@virchow
beiße nie den Herrn der dich füttert.



raik

Virchov 19. Mär 2004 11:57

Re: pointer to an array in D und C++
 
Pfaffenrot??? Wo isn dette? In Tirol? :gruebel:

Virchov 19. Mär 2004 12:00

Re: pointer to an array in D und C++
 
Danke, Nico! Das ist wirklich nett von Dir!

Ich sitze schon einige Stunden um das Problem, also, war etwas gestresst. Tschuldigung.. :oops:

Virchov 19. Mär 2004 12:25

Re: pointer to an array in D und C++
 
Raik,Kiar, wie auch immer: Laß deine Ratschläge lieber bei sich. Ich beiße nicht und habe keinen Herrn, da ich schließlich auch kein Hund bin.

sakura 19. Mär 2004 13:32

Re: pointer to an array in D und C++
 
@Virchow:
:warn:

In Zukunft möchte ich diese Ausdrucksweise von Dir hier nie wieder lesen. Es geht uns allen um eine ordentliche Zusammenarbeit. Deshalb gleich eine zweite Bedingung an Dich. Wenn Du in Zukunft Fragen hast, dann stelle die bitte in einer Art und Weise, in welcher jeder versteht was Du willst.
:warn:


...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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