AGB  ·  Datenschutz  ·  Impressum  







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

Get(anyPointer) Verständnisfrage

Ein Thema von Nintendo · begonnen am 29. Apr 2013 · letzter Beitrag vom 2. Mai 2013
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

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

AW: Get(anyPointer) Verständnisfrage

  Alt 2. Mai 2013, 14:16
Die Übergabe eines Pointer-Parameters als Var-Parameter (also interne Verwendung eines weiteren Pointers darauf) macht in den wenigsten Fällen Sinn, und PChar ist nun einmal ein Pointer-Typ.

[edit] Ich habe gerade mal ein wenig gestöbert, der Kernsatz von MS zu [in] und [out] scheint mir zu sein:
Zitat:
The [in] and [out] attributes specify the direction in which the parameters are passed.
[/edit]
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

Geändert von DeddyH ( 2. Mai 2013 um 14:19 Uhr)
  Mit Zitat antworten Zitat
Nintendo

Registriert seit: 16. Feb 2009
82 Beiträge
 
#2

AW: Get(anyPointer) Verständnisfrage

  Alt 2. Mai 2013, 18:36
Die Übergabe eines Pointer-Parameters als Var-Parameter (also interne Verwendung eines weiteren Pointers darauf) macht in den wenigsten Fällen Sinn, und PChar ist nun einmal ein Pointer-Typ.

[edit] Ich habe gerade mal ein wenig gestöbert, der Kernsatz von MS zu [in] und [out] scheint mir zu sein:
Zitat:
The [in] and [out] attributes specify the direction in which the parameters are passed.
[/edit]
Das heißt dann also, das die GetText() Funktion aus dem ToolaAPI trotz ihres Namens einen String an Buffer übergibt?

Delphi-Quellcode:
var myText: PChar;

procedure SendText(Thisone: PChar);
begin
  GetText(1, THisOne, StrLen(ThisOne));
end;

begin
  myText := 'Das hier';
  SendText(myText);
end.
Denn die fragliche GetText() Funktion hat nämlich keinen Var bzw. Out Parameter. Also nicht

function GetText(Position: Integer; out Buffer: PChar; ...)
sondern

function GetText(Position: Integer; Buffer: PChar;... Das hieße also dann das ich den Text nur senden, aber nicht von irgendwoher lesen kann?

.

Geändert von Nintendo ( 2. Mai 2013 um 18:38 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: Get(anyPointer) Verständnisfrage

  Alt 2. Mai 2013, 18:54
'_OUT_' (C) und out (Delphi) haben *nichts* miteinander zu tun.

Mann, und so schwer kann das doch nicht sein: Ich will Schweinswürstel essen. Du hast welche.

1. Ich nehme mir einen Schuhkarton (=Adresse), und sorge dafür, das dort 10 leckere Schweinswürste reinpassen (=alloziiere Speicher)
2. Ich gebe Dir den Schuhkarton und Du legst da deine leckeren Schweinswürste rein.
3. Du gibst mir den Schuhkarton zurück
4. Ich grille die Würste und esse sie auf.
5. Den Schuhkarton brauche ich nun nicht mehr und daher schmeisse ich ihn weg (=Speicher freigeben)

Preisfrage: Ist der Schuhkarton verändert worden?
[x] Nein, der Karton ist der Gleiche, nur der Inhalt wurde verändert
[ ] Ja, der Karton wurde verändert. Es ist ja nun kein Schuhkarton mehr, sondern ein Leckerschweinswürstelkarton

PS: Warum ich auf Schweinswürstel komme? Weil ich gerade welche gemacht habe!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Get(anyPointer) Verständnisfrage

  Alt 2. Mai 2013, 18:54
Du musst Dir darüber im Klaren werden, was die Nutzdaten sind und was die Zeiger darauf. Die aufrufende Routine reserviert den zu befüllenden Speicher und gibt dessen Zeiger sowie die größe des reservierten Speichers an die Funktion weiter. Diese schreibt ihre Daten dann an diese Adresse. Stell Dir das so vor, als würde ich bei Dir 4 Kisten Bier bestellen und Dir zum Verladen meinen Autoschlüssel geben.
Delphi-Quellcode:
procedure VerladeBier(Ziel: PKofferraum; Anzahl: integer);
begin
  VerladeKisten(Ziel^, Anzahl);
end;
Ziel ist also mein Kofferraumschlüssel und Anzahl die Menge der zu verladenden Kisten. Dabei habe ich als Auftraggeber dafür zu sorgen, dass die bestellte Menge auch tatsächlich in den Kofferraum, zu dem der übergebene Schlüssel gehört, hineinpasst.
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
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 12:03 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