![]() |
Pointer zu Typen ! Warum ?
Ich hab schon so in einigen Units von fortgeschrittenen Programmieren gesehen,
dass sie Pointer zu jedem Typ vereinbaren Hmm aber warum ?
Code:
type
TWochen = ( montag, ... , sonntag ); PWochen = ^TWochen; // so ca. |
Re: Pointer zu Typen ! Warum ?
Das ist mehr so aus Gewohnheit, für denFall, daß man vielleicht mal sonen Pointer gebrauchen könnte. Es ist nichts, was man unbedingt machen muss.
|
Re: Pointer zu Typen ! Warum ?
hmmm,
ein fall wäre ? :angel: Danke schon mal im voraus |
Re: Pointer zu Typen ! Warum ?
Binärbaum, verkettete Liste, ...
|
Re: Pointer zu Typen ! Warum ?
Teilweise muss man auch einen Record deklarieren und danach ein Array of TMyRecord. Wenn aus irgendwelchen Gründen TRecordArray ein Feld des Records selbst darstellen soll, hat man ein Problem, da der Compiler die Größe von TMyRecord nicht kennt.
In diesem Falle kann man zuerst das Array deklarieren, welches man aber von Typ PMyRecord festlegt. Der Pointer hat eine feste Größe von 4 Bytes. |
Re: Pointer zu Typen ! Warum ?
Ehrlich gesagt finde ich es bei Aufzählungen reichlich sinnlos, einen entsprechenden Zeiger zu definieren.
|
Re: Pointer zu Typen ! Warum ?
Zitat:
|
Re: Pointer zu Typen ! Warum ?
hmmmm, verstehe .....
... ... ... ... nur Bahnhof ^^ :wall: :wall: kann mir das einer gründlicher erklären ? wäre sehr nett MfG |
Re: Pointer zu Typen ! Warum ?
Das überlasse ich mkinzler :mrgreen:
|
Re: Pointer zu Typen ! Warum ?
Was willst du genauer Wissen?
Zitat:
|
Re: Pointer zu Typen ! Warum ?
Ach menno - du hast doch fast immer eine Antwort auf alles. Außerdem hattest du die Antwort auf die Frage hier ja schon genannt. :zwinker:
|
Re: Pointer zu Typen ! Warum ?
Achtung, ich weiß nicht wie das Folgende mit Delphi > Delphi 3 aussieht :mrgreen:
Delphi-Quellcode:
Kann ich ich nicht kompilieren,
procedure test(a: ^byte);
begin end;
Delphi-Quellcode:
geht.
type PByte = ^Byte;
// ... procedure test(a: PByte); begin end; MfG, Bug |
Re: Pointer zu Typen ! Warum ?
Würde man in Delphi auch so lösen:
Delphi-Quellcode:
procedure test(var a: Byte);
|
Re: Pointer zu Typen ! Warum ?
Zitat:
|
Re: Pointer zu Typen ! Warum ?
Nehmen wir an, du möchtest einer Prozedur ein Record übergeben, welches selbst einen Verweis auf die Prozedur hat.
Delphi-Quellcode:
Du könntest im Record selbst kein Feld auf TFormatProcedure definieren,
PTFormatProcedure = ^TFormatProcedure;
TFormatRecordEntry = record iProc : Byte; pFunc : PTFormatProcedure; end; TFormatProcedure = function(const re: TFormatRecordEntry; const xSet: TDataSet): String; da der Compiler an dieser Stelle die Prozedur noch nicht kennt. Andersrum kannst du das Record nicht danach definieren, da es ein Parameter für die Prozedur ist. Mit einem Pointer wäre dies machbar :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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