AGB  ·  Datenschutz  ·  Impressum  







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

Pointer

Ein Thema von Pseudemys Nelsoni · begonnen am 11. Mai 2004 · letzter Beitrag vom 12. Mai 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Pointer

  Alt 11. Mai 2004, 06:00


Schon wieder so ein Thread von mir...naja....ich wills langsam endlich mal kapieren

meinen alten thread finde ich nichtmehr, deswegen poste ich mal hier....

Ok, ich weiss wie zeiger funktionieren und was sie tun...aber ich finde keine Verwendung für sie. Überall wo ich sehe das Pointer benutzt werden können, klappt es genausogut mit einer "normalen" Variable, genauso mit einer verketteten Liste...statt der könnte ich genauso ein dynamisches arrays benutzen.

Kann mir jemand einen kleinen Codeschnippsel geben wo ein pointer verwendet wird wo man auch garkeine andere möglichkeit hat als diesen zu verwenden?


Das Klassen-Kapitel in meinem Buch war wesentlich leichter...


mfg
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Pointer

  Alt 11. Mai 2004, 06:53
Hai Pseudemys Nelsoni,

Zitat von Pseudemys Nelsoni:
...Kann mir jemand einen kleinen Codeschnippsel geben wo ein pointer verwendet wird wo man auch garkeine andere möglichkeit hat als diesen zu verwenden?...
Schaue Dir doch mal die Eingenschaft Data von z.B. einem TListItem an. Das ist auch "nur" ein Pointer
Diese verwende ich zum Beispiel um die informationen zu einem Datensatz zu speichern den ich aus einer Datenbanktabelle geholt habe und in einem TListView anzeige.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#3

Re: Pointer

  Alt 11. Mai 2004, 07:21
Hallo,

jede Instanz einer Klasse (Objekt) ist am Ende ein Pointer - das gilt so für ziemlich alle Ressourcen die du zur Laufzeit anforderst - den da kann zur Compilezeit ja noch keine Adresse festgelegt werden wo das mal im Adreßraum liegen wird.

Der Typ string z.B. ist auch nur ein Pointer auf einen nullterminierten String (PChar) mit noch einer zusätzlichen Längenangabe beim Offset -2 (?). Die gibt's also überall - Delphi vermurkst das nur teilweise
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Pointer

  Alt 11. Mai 2004, 07:32
Dein Argument das man anstelle von einer verketteten Liste auch ein Array nehmen kann ist nicht ganz richtig. Wenn du ein array nich global definierst kommtn man da ziemlich schnell an die grenze so wo das array nix mehr aufnehmen kann. Außerdem ist die arbeit mit einem array unperformanter. Wenn man ein dynamiches array erweitern will muss man jedesmal setlength aufrufen was nicht gerade performant ist. Bei TList (verkettete Liste) ist das viel performanter...

ein weiteres Beispiel wo ich zum Beispiel ohne pointer nicht auskäme:
Ich habe eine visuelle Playliste (zum anklicken etc.) und mehrere 100 nonvisuelle. Wenn ich jetzt für jede nonevisuelle liste eine visuelle erstellen müsste wäre das ziemlich unperformant. So brauch ich bei meiner Komponente nur "DataSourcelist := Playliste01" ausführen (also den pointer auf meine andere playliste setzen) und schon hat meine visuelle Liste andere Items. Ohne Pointer wäre das grausam.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Pointer

  Alt 11. Mai 2004, 08:43
Zitat von SirThornberry:
Wenn du ein array nich global definierst kommtn man da ziemlich schnell an die grenze so wo das array nix mehr aufnehmen kann.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Pointer

  Alt 11. Mai 2004, 08:58
@Jens Schumann: Wenn das Array member einer Klasse ist dann kommt wenn ich mich recht erinnere bei großen Datenmengen irgendwann ein Stack overflow,hab allerdings gelesen das dies nich der fall sein soll wenn man das array global definiert (keine ahnung ob das wirklich so ist). Ich musste vor einiger zeit mein programm so ziemlich komplett um strukturieren weil ich erst mit dynamichen array gearbeitet hab und das programm inzwischen so viel daten zu verarbeiten hat das dies fehl schlägt. Der Vorteil des umstellens ist der performancegewinn...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Pointer

  Alt 12. Mai 2004, 08:11
@SirThornberry vielen Dank für die Antwort.
Da ich grundsätzlich nicht mit dyn. Arrays arbeite ist mir das wohl noch nicht aufgefallen.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Pointer

  Alt 12. Mai 2004, 21:19
Moin Sir Thornberry,

nur mal so aus Interesse:
Hast eine Idee woher Du diese Info haben könntest (so ungefähr)?

Ich habe schon dynamische Arrays als Felder einer Klasse verwendet, die dann hunderttausende Einträge erhalten hat, ohne, dass es zu einem Stackoverflow gekommen wäre (und ohne dass ich den Standardwert für den Stack verändert hätte).
Gross ist natürlich auch relativ
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
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 04:27 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