AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Pointer als übergabeparameter bei Prozedurendeklaration
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer als übergabeparameter bei Prozedurendeklaration

Ein Thema von Virchov · begonnen am 15. Mär 2004 · letzter Beitrag vom 15. Mär 2004
Antwort Antwort
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#1

Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 14:49
hallo, Herrschaften!

Warum lässt Delphi sowas nicht kompilieren?

procedure CopyBoolArray( ^Source, ^Target: boolean; nElements: integer);

Übrigens, so geht es auch nicht:

procedure CopyBoolArray( Source, Target: ^boolean; nElements: integer);

Was ist falsch mit dieser Deklaration?


Vielen Dank!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 15:37
Moin Virchov,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Also ich würde es so machen:

Delphi-Quellcode:
type
  PBoolean = ^Boolean;

procedure CopyBoolArray( ApSource, ApTarget: PBoolean; AnElements: integer);
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#3

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 15:49
Danke, Chris, scheint jeklappt zu haben!

ps auch herzlichen Dank für den Gruß

Virchow
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#4

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 15:49
Zitat von Virchov:
Warum lässt Delphi sowas nicht kompilieren?
Delphi erlaubt keine Inline-Deklarationen von Zeigertypen.
(zudem gibt es keinen Array-Operator wie in C++)

Was Du suchst, könnte so aussehen:
Delphi-Quellcode:
type
  PBooleanArray = ^TBooleanArray;
  TBooleanArray = array [0..High(Integer) - 1] of Boolean;

procedure CopyBoolArray(Source, Target: PBooleanArray; nElements: Integer);
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#5

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 15:59
Hallo, Nico!

Genau das mache ich - Übersetzen aus C++ ins Delphi! Und im Urquell (c++) sieht das folgendermaßen aus:

void CopyBoolArray(
bool* Source,
bool* Target,
int nElements
);


Vielleicht, macht es dann überhaupt keinen Sinn, die Zeiger auf Booleans im Delphi zu verwenden (bei Funktionsdeklarationen) ?

Andererseits, soll ich alles möglichst genau übersetzen...

Danke!
Virchov
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#6

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 16:14
Zitat von Virchov:
Andererseits, soll ich alles möglichst genau übersetzen...
Wie schon angedeutet, gibt es etliche Möglichkeiten der Übersetzung. Die 'beste' Übersetzung hängt davon ab, in welchem Kontext die Funktion steht bzw am häufigsten verwendet wird.

Die 'wörtliche' Übersetzung hat Christian bereits aufgeführt.
Die Variante mit PBooleanArray würde nur den Umgang auf Seiten von Delphi (mit den Arrays dynamischer Länge) erleichtern.

Zudem kommt es (wenn es um die Kommunikation mit C/C++ geht) darauf an, welche Größe 'bool' hat. Es könnte also mit Boolean (1 Byte) oder LongBool (4 Byte) übersetzt werden!
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#7

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 16:58
Klar. Was ich nicht verstehe, warum der Compiler das hier nicht frisst?
Auch keine Möglichkeit der Inline-Deklaration von Arrays in Delphi?

procedure jacobi3x3(a: array [1..3, 1..3] of double; d: array [1..3] of double;
v: array [1..3,1..3] of double]);

Virchov
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 17:00
Moin Virchov,

Zitat von Virchov:
Auch keine Möglichkeit der Inline-Deklaration von Arrays in Delphi?
jain. Nicht mit Grössenangabe.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#9

Re: Pointer als übergabeparameter bei Prozedurendeklaration

  Alt 15. Mär 2004, 17:17
Könnte so aussehen:
Delphi-Quellcode:
type
  PVector3 = ^TVector3;
  TVector3 = array [1..3] of Double;
  PMatrix33 = ^TMatrix33;
  TMatrix33 = array [1..3] of TVector3;

procedure jacobi3x3(var a: TMatrix33; var d: TVector3; var v: TMatrix33);
Wobei ich bei C++ eher von [0..2] ausgehen würde (type[3] -> array [0..2] of type).
  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 16:10 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