AGB  ·  Datenschutz  ·  Impressum  







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

Fehler bei Headerübersetzung?

Ein Thema von SleepyMaster · begonnen am 1. Jul 2004 · letzter Beitrag vom 1. Jul 2004
Antwort Antwort
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#1

Fehler bei Headerübersetzung?

  Alt 1. Jul 2004, 08:51
Ist das tatsächlich falsch übersetzt oder wie ist das?

Zitat von MSDN:
LONG RegConnectRegistry(
LPCTSTR lpMachineName,
HKEY hKey,
PHKEY phkResult
);
Zitat von Windows.pas:
function RegConnectRegistry(lpMachineName: PChar; hKey: HKEY;
var phkResult: HKEY): Longint; stdcall;

PHKEY = ^HKEY;
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#2

Re: Fehler bei Headerübersetzung?

  Alt 1. Jul 2004, 09:01
Ich glaub ich bin jetzt drauf gekommmen:

Das var in der Delphi übersetzung macht aus dem HKEY ein PHKEY, damit es als Variable und nicht nur als Konstante weitergegeben werden kann.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Fehler bei Headerübersetzung?

  Alt 1. Jul 2004, 09:39
Nein, var bedeutet, du musst zwingend eine Variable benutzen. In dem Fall macht das auch Sinn, weil du das Handle des geöffneten Registryschlüssels zurückbekommst und damit dann weiter arbeiten kannst:
Delphi-Quellcode:
if(RegConnectRegistry('\\Computername',HKEY_LOCAL_MACHINE,
  regKey) = ERROR_SUCCESS) then
try
  // wenn du Glück hast, kannst du nun hier
  // über das "regKey"-Handle Werte auslesen,
  // usw.
finally
  RegCloseKey(regKey);
end;
Bei der Originaldeklaration von Microsoft übergibst du die Variable "regKey" in dem Fall nicht als HKEY-Variable, sondern als Zeiger (deswegen ja auch PHKEY). Theoretisch könntest du daher auch nil angeben, nur wird das in dem speziellen Fall wohl keiner machen.

Aber es gäbe andere Beispiele, in denen ein Zeiger durchaus sinnvoller ist.
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#4

Re: Fehler bei Headerübersetzung?

  Alt 1. Jul 2004, 10:07
Zitat von SleepyMaster:
Das var in der Delphi übersetzung macht aus dem HKEY ein PHKEY
Das ist korrekt, intern pusht delphi die referenz zu der variable auf den stack.

Zitat von SleepyMaster:
... , damit es als Variable und nicht nur als Konstante weitergegeben werden kann.
dies ist fast korrekt. Man will dabei verhindern dass man die die referenz auf eine konstante uebergibt da diese funktion in diesen speicher schreiben wuerde. Somit zwingt einen Delphi, eine Variable zu uebergeben
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Fehler bei Headerübersetzung?

  Alt 1. Jul 2004, 12:27
Moin Zusammen,

Zitat von w3seek:
Somit zwingt einen Delphi, eine Variable zu uebergeben
was überflüssig wäre, wenn man, wie von MS vorgesehen, wirklich einen Pointer übergeben würde.

Durch die Verwendung von var Parametern an solchen Stellen, kommen dann ja auch diese "netten" Eigenarten zu Stande, dass man sich Funktionen noch einmal selbst importieren muss, wenn man sie wie vorgesehen benutzen will, z.B. ExtractIconEx.
In dem Falle gibt es sogar einen FAQ Artikel bei Borland, der das entsprechend vorsieht.
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 15:49 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