AGB  ·  Datenschutz  ·  Impressum  







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

return Pointer / dynamic array

Ein Thema von renew · begonnen am 21. Jul 2020 · letzter Beitrag vom 22. Jul 2020
Antwort Antwort
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: return Pointer / dynamic array

  Alt 22. Jul 2020, 09:39
Wenn da protected steht, dann schließt das einen Zugriff von außen bewusst aus - zumindest nicht ohne Tricks.
Ich möchte ja nicht von außen mit Schreibrechten direkt auf die protected Membervariable zugreifen , deshalb will ich ja ein getter oder Property nur mit leserechten. also z.b. property Vertices : array of TVertex read fVertices; Aber das schaffe ich nicht wegen dem Rückgabetyp "array of ..."

Die Frage ist auch, ob ein "array of" einen zusammenhängenden Speicherbereich reserviert, oder ob es sowas wie ne verkettete Liste oder so ist, und somit die einzelnen Elemente des Arrays im Speicher kreuz und quer liegen können. Weil diesen "Speicherbereich" muss ich an die OpenGl Funktionen "an einem Stück" übergeben.

Geändert von renew (22. Jul 2020 um 09:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#2

AW: return Pointer / dynamic array

  Alt 22. Jul 2020, 09:51
Nach meiner Kenntnis liegen Arrays immer blockweise im Speicher.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: return Pointer / dynamic array

  Alt 22. Jul 2020, 09:55
Oder kann ich z.b. ein "array of TVertex" in ein Pointer casten, diesen zurückgeben, und später bei Bedarf diesen wieder in ein "array of TVertex" zurückcasten?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#4

AW: return Pointer / dynamic array

  Alt 22. Jul 2020, 11:49
Oder kann ich z.b. ein "array of TVertex" in ein Pointer casten, diesen zurückgeben
Wer das macht wird gesteinigt, gevierteilt, geköpft, gehängt und anschließend bekommt er noch eine Standpaucke, damit er nie wieder auf so eine saudämliche Idee kommt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: return Pointer / dynamic array

  Alt 22. Jul 2020, 12:24
Ich glaube renew möchte einfach nur die Syntax zu dynamische Arrays als Rückgabewert erfahren. So sollte es gehen:
Delphi-Quellcode:
type
  TVertexDynArray = array of TVertex;
  TMesh = class
  protected
     fVertices: TVertexDynArray;
  public
    property Vertices : TVertexDynArray read fVertices;
    function GetVertices : TVertexDynArray ;
  end;
[...]
procedure TRenderer.DrawMesh(mesh: TMesh);
var
    vertices: TVertexDynArray;
begin
    vertices:= mesh.GetVertices;
    vertices[0].y := 1;
    glVertexPointer(3, GL_FLOAT, sizeof(TVertex), vertices[0].x);
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: return Pointer / dynamic array

  Alt 22. Jul 2020, 18:28
Ich glaube renew möchte einfach nur die Syntax zu dynamische Arrays als Rückgabewert erfahren. So sollte es gehen:
genau das Danke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#7

AW: return Pointer / dynamic array

  Alt 22. Jul 2020, 20:55
Ja, ein Public Property auf eine Protected oder Private Methode geht,
aber auch die Methode direkt in Public funktioniert, denn Schreibzugriff gibt es auch da nicht.

Abgesehn von dem Bug Feature mit dem CopyOnWrite, aber da ist es egal ob Methode oder Property.



ABER, wie bereits gesagt, braucht man so oder so einen öffentlichen und gemeinsamen nutzbaren Array-Typen.
Ein Therapeut entspricht 1024 Gigapeut.
  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 17:56 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