Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.250 Beiträge
 
Delphi 12 Athens
 
#10

AW: E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimme

  Alt Gestern, 12:11
Delphi-Quellcode:
begin
  var SecurityAttr := Default(TSecurityAttributes); // inkl. sowas wie FillChar mit 0
  SecurityAttr.nLength := SizeOf(TSecurityAttributes);
  SecurityAttr.bInheritHandle := True;
  //SecurityAttr.lpSecurityDescriptor := nil; // 0 bleibt ja 0
  Result := CreatePipe(ReadPipe, WritePipe, @SecurityAttr, 0);
end;
Delphi-Quellcode:
var
  SecurityAttr: TSecurityAttributes;
begin
  SecurityAttr := Default(TSecurityAttributes); // inkl. sowas wie FillChar mit 0
  ...



Der Unterschied kann auch beim SecurityAttr sein, wie z.B. typloser Zeiger, typisierter Zeiger oder Const/Var/...
Also einfach mal die Deklaration von "deinem" verwendeten CreatePipe suchen und die Signatur (Typen der Parameter) ansehn,
sowie bei dir und der Deklaration prüfen, ob sie auf die "selben" Typ-Deklarationen der Parameter verweisen.

Also die Deklaration in Winapi.Windows sieht eher so aus:
Das ist auch der Grund, warum z.B. zusammen mit Embas WinMD es gern raucht, da sich gern das mit Pointer vs. Const/Var unterscheidet. (für Pflichparameter, finde ich die Variante mit Const/Var handlicher)
Teilweise ist es im WinMD auch besser, weil Delphi teilweise hart CONST/VAR nutzt, auch für optionale Parameter, welche durch sowas zur Pflicht werden (außer man castet böse mit NIL um sich)
$2B or not $2B

Geändert von himitsu (Gestern um 12:27 Uhr)
  Mit Zitat antworten Zitat