Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 10, 2025 10:17

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 01, 2003 22:42 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Jep, es sind feste records (Vertex) bzw. Klassen (Polys).

ABer wie kann ich wenn ich das ganze mit getmem mache, über Indexe auf die einzelnen Elemente zugreifen?

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 01, 2003 22:45 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Man definiert sich ein Array auf die Polygone.
TPolyArray=array[0..1000] of TPolygon.
und einen Zeiger auf das Array
PPolyArray=^TPolyArray;

Wenn man dann den Zeiger hat, kann man ihn auf PPolyArray casten.

PPolyArray(p)^[Index]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 02, 2003 16:31 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
... und per GetMem(p[i], SIzeof(TPoly) Speicher anfordern?

Aber ist man so auf 1000 ELemente beschränkt? Gut, unwahrscheinlich, dass sowas passiert aber trotzdem?

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 02, 2003 16:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du bist natürlich nicht auf 1000 Elemente beschränkt.

Ich würde das aber anders machen.
Code:
  1. F_Data: Pointer; // membervariable von irgendwas
  2.  
  3. // beim Initialisieren
  4. // 1000 kannst du durch beliebiges ersetzen.
  5. GetMem(F_Data, SizeOf(TPoly) * 1000);

Und dann kannst du einfach einen PPoly auf Data setzen und per Inc dich durch das Array wurschteln.
Also
Code:
  1. var
  2.   Poly: PPoly;
  3. bagin
  4.   Poly := F_Data;
  5.   // es steht bereuts auf das erste Element
  6.   // Und jetzt aber das nächste Element
  7.   Inc(Poly);

Oder wenn du direkt Pointer daraus brauchst kannst du auch Inc(Poly, Index -1); Die Pointer kannst du dir auch irgendwo merken wenn es erforderlich sein sollte.
So hast du den kompletten Speicher am Stück. Wenn du mehrmals GetMem aufrufst ist das nicht gewährleistet und sogar recht unwahrscheinlich.

Um die Größe später noch einmal zu verändern existiert eine Methode namens ReallocMem. Aber ich wäre vorsichtig was den bereits bestehenden Inhalt angeht. Es kann passieren, dass der dadurch verändert oder gelöscht wird. Besser ist es dann noch einmal alles zu setzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 02, 2003 17:07 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Gute Idee, versuch beides mal aus.

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]