AGB  ·  Datenschutz  ·  Impressum  







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

pointer

Ein Thema von HAF4ever · begonnen am 18. Nov 2003 · letzter Beitrag vom 23. Nov 2003
Antwort Antwort
Benutzerbild von HAF4ever
HAF4ever

Registriert seit: 31. Okt 2003
Ort: Enns - Österreich
37 Beiträge
 
#1

pointer

  Alt 18. Nov 2003, 22:29
mal ne ganz simple frage ...
überall hört man was von pointern ...
doch ich hab keine ahnung für was man die brauchen könnte, ich bin bis jetzt immmer ohne denen ausgekommen
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#2

Re: pointer

  Alt 18. Nov 2003, 22:31
Da hast Du aber ganz doll Glück gehabt...
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von HAF4ever
HAF4ever

Registriert seit: 31. Okt 2003
Ort: Enns - Österreich
37 Beiträge
 
#3

Re: pointer

  Alt 18. Nov 2003, 22:33
wieso das denn ...?
ist das wirklich so kompliziert wie man so hört ...?
diese pointer müssen doch für irgendwas gut sein?
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#4

Re: pointer

  Alt 18. Nov 2003, 22:34


Klick

mfg Tobias
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
Benutzerbild von HAF4ever
HAF4ever

Registriert seit: 31. Okt 2003
Ort: Enns - Österreich
37 Beiträge
 
#5

Re: pointer

  Alt 18. Nov 2003, 22:38
thx ...
also hab ich das richtig verstanden:
wenn ich mit pointern auf einen speicherplatz zugreifen kann, dann kann ich mit nen pointer auch auf einen Datentyp char als byte zugreifen ...?
das wäre dann für die speicherung von farben in rgb relativ praktisch
  Mit Zitat antworten Zitat
Benutzerbild von HAF4ever
HAF4ever

Registriert seit: 31. Okt 2003
Ort: Enns - Österreich
37 Beiträge
 
#6

Re: pointer

  Alt 18. Nov 2003, 23:07
Delphi-Quellcode:
function ColorToString(s: String):TColor;
var
  R,G,B: ^Byte;
begin
  R:=s[1];
  G:=s[2];
  B:=s[3];
  ColorToString:=RGB(R,G,B);
end;
das funktioniert aber nicht ...
naja, ich glaub das mit den pointern hab ich noch nicht ganz verstanden
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#7

Re: pointer

  Alt 18. Nov 2003, 23:10
hi,

in jeder objekorientierten Entwicklung arbeitest du dauernd mit pointern, hinter jedem form1, edit2 button5 steckt ein Pointer auf den Speicherplatz, an dem dann wirklich die Datenstruktur steht. Der Entwickler muß sich nicht wirklich dauernd datum kümmern, sollte aber wissen, was er tut, um korrekte Designentscheidungen treffen zu können.

Wenn du ohne untypisierte Pointer, also die dinger die du explizit dereferenzieren mußt ausgekommen bist, dann gewöhns dir auch nicht erst an, die Dinger sind zu recht verpönt, und sterben in moderen Entwicklungsumgebungen wie Java und .Net aus, bzw es gibt sie dort gar nicht, oder sie werden zumindest bei jeder verwendung als "unsafe" vom Compiler angemeckert.

Grüsse
Woki
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#8

Re: pointer

  Alt 19. Nov 2003, 15:48
Bei einem so strengen Typing wie in Pascal kommt man ohne untpyisierte Pointer aber leider nicht aus, so z.B. bei HAFs Problem:

Delphi-Quellcode:
r := Byte(Pointer(@s[1])^);
g := Byte(Pointer(@s[2])^);
b := Byte(Pointer(@s[3])^);
Also, HAF: Erst dereferenzieren, dann datentypunanbhängig machen, referenzieren und zu Byte casten.
Speziell für dieses Problem wäre aber viel sinnvoller:

Delphi-Quellcode:
r := Ord(s[1]);
g := Ord(s[2]);
b := Ord(s[3]);
Ich nehme aber an, dass Ord() intern so gelöst ist, wie ich das im ersten Codebeispiel gezeigt habe (vielleicht ist es aber auch uner Verwendung des Inline-Assemblers gemacht worden).
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#9

Re: pointer

  Alt 23. Nov 2003, 12:15
Man kommt.

Aus drei Bytewerten für R und G und B einen TColor zu machen, das geht auch ohne Pointer. Außerdem ist das gleich ein Beispiel, wie zu den merkwürdigsten Fehlern kommt. Ein TColor belegt nämlich vier Byte, und dann drei davon irgendwo in den Speicher legen, und dann dem Compiler sagen, dies sei ein TColor, dürfte zu merkwürdigsten und unreproduzierbaren Problemen führen. Manchmal gibt es eine falsche Farbe, manchmal eine Zugriffsverletzung...

Verwendet man dagegen die vorgesehen Convertierungsfunktionen, hat der Compiler eine Chance, fehler zu verhindern.

Grüsse
Woki
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: pointer

  Alt 23. Nov 2003, 15:59
Eigentlich sind Pointer ganz einfach. Heimlich sind sie dir schon begegnet. "var" wird naemlich mit ihnen implementiert.
Ein Pointer ist eine Referenz. Er zeigt auf etwas. Eine Adresse ist eine Referenz. Also ist ein Pointer eine Adresse.
Eine Pointer-Variable ist also eine Variable deren Wert ein Pointer sprich eine Adresse ist.
Nun kann man natuerlich einen Pointer auf eine Pointer-Variable haben usw usf.
Referenzieren heisst die Adresse einer Variablen bilden (nur Variablen koenen Adressen haben).
Dereferenzieren heisst von einer Adresse zur Variablen gehen.
  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 10:13 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