AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Tatsächliche und formale Variablen? (Funktion)
Thema durchsuchen
Ansicht
Themen-Optionen

Tatsächliche und formale Variablen? (Funktion)

Ein Thema von zecke · begonnen am 17. Jan 2007 · letzter Beitrag vom 13. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#1

Tatsächliche und formale Variablen? (Funktion)

  Alt 17. Jan 2007, 17:16


Habe schon im Forum etwas dazu gesehen, aber trotzdem konnte ich mein (vermutlich -Problem) nicht lösen..

Habe folgende Funktion:

Delphi-Quellcode:
function BlaBla(var i: integer; var CtrlName: String) : String;
begin
Showmessage(CtrlName+IntToStr(i));
end;
und aufrufen hiermit:

BlaBla(1,'Edit'); Bekomme in der Zeile des Aufrufes folgende Meldung:

Zitat:
E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Wo stimmt denn hier etwas nicht überein? Ich stehe auffem Schlauch

Danke im voraus
mfg zecke
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Tatsächliche und formale Variablen? (Funktion)

  Alt 17. Jan 2007, 17:17
Moin Zecke,

'Edit' ist ein Konstante (Stringliteral) und kann somit nicht als var-Parameter übergeben werden.
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Tatsächliche und formale Variablen? (Funktion)

  Alt 17. Jan 2007, 17:19
Deshalb muß es

Delphi-Quellcode:
var
  par1: Integer;
  par2: string;
...
  par1 := 1;
  par2 := 'Edit';
  BlaBla(par1,par2);
o.ä. heißen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Tatsächliche und formale Variablen? (Funktion)

  Alt 17. Jan 2007, 17:22
Ah danke

mkinzlers Beitrag bringt mich zu Seehases Beitrag Problem gelöst
mfg zecke
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Tatsächliche und formale Variablen? (Funktion)

  Alt 17. Jan 2007, 17:23
Wenn du "var" in den deklarationsteil der Funktion übergibts, willd er Compiler die werte zurückgeben. Dementsprechend müssen beim Aufruf auch Variablen vorhanden sein.
du kannst in deinem Fall auch erst einmal das "var" weglassen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Rynardald

Registriert seit: 18. Sep 2014
26 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Tatsächliche und formale Variablen? (Funktion)

  Alt 10. Okt 2014, 17:29
Hallo,
habe ein ähnliches Problem.
Immer wenn ich versuche eine Bibliothek zu kompilieren bekomme ich den Fehler:
Code:
E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Der Quellcode dazu sieht so aus:
Delphi-Quellcode:
  
  procedure TFilterGraph.HandleEvents;
  var
    hr: HRESULT;
    Event: Integer;
    {$IF CompilerVersion >= 24.0}
    Param1, Param2: LongInt;//NativeInt;
    {$ELSE}
    Param1, Param2: Integer;
    {$IFEND}begin
    if assigned(FMediaEventEx) then
    begin
      hr := FMediaEventEx.GetEvent(Event, Param1, Param2, 0); // an dieser Stelle
      while (hr = S_OK) do
      begin
        DoEvent(Event, Param1, Param2);
        FMediaEventEx.FreeEventParams(Event, Param1, Param2);
        hr := FMediaEventEx.GetEvent(Event, Param1, Param2, 0); // und hier auch nochmal
      end;
    end;
  end;
Die entsprechende Funktion sieht aber so aus:
Delphi-Quellcode:
function GetEvent(out lEventCode: Longint; out lParam1, lParam2: Longint;
        msTimeout: DWORD): HResult; stdcall;
Kann mir da einer von euch weiterhelfen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Tatsächliche und formale Variablen? (Funktion)

  Alt 10. Okt 2014, 17:42
Die Konstante 0 ist keine Variable, welche man als out Parameter übergeben könnte.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Tatsächliche und formale Variablen? (Funktion)

  Alt 10. Okt 2014, 17:43
@Markus: msTimeout ist auch kein OUT-Parameter.


Integer ist in 32-Bit-Anwendungen ein Alias für den LongInt.
In 64-Bit-Anwendungen wäre es ein Alias für Int64, aber da man den Integer-, INT-Typen eingefroren hat, bleibt er in Zukunft weiterhin LongInt.

Also eigentlich sollte es passen, egal ob als Integer oder LongInt deklariert.
PS: Der EventCode ist auch ein Ausgabe-Parameter. (nur als Tipp, weil ich nur bei den Params den COmpilerschalter seh)

Welche Delphi-Version nutzt du denn?

Was genau wird denn bemängelt? (wo steht den der Cursor)


Könnte es in DoEvent zu einer Exception kommen?
Wenn ja, dann gehört das FreeEventParams wohl besser in ein Try-Finally.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Okt 2014 um 17:47 Uhr)
  Mit Zitat antworten Zitat
Rynardald

Registriert seit: 18. Sep 2014
26 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Tatsächliche und formale Variablen? (Funktion)

  Alt 13. Okt 2014, 09:16
ich hab jetzt den Eventcode auch in die Compileranweisung mit reingenommen - hat sich aber nichts geändert.

Ich benutze die XE3 und der Cursor steht direkt hinter "Param1".

Ob es in der DoEvent zu einer Exception kommt kann ich nicht sagen - aber da ich das ganze gar nicht kompiliert, kann es ja nicht die Fehlerquelle sein, oder?
  Mit Zitat antworten Zitat
Rynardald

Registriert seit: 18. Sep 2014
26 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Tatsächliche und formale Variablen? (Funktion)

  Alt 13. Okt 2014, 09:48
hab zwar keine Ahnung wieso, aber durch den Wechsel von Longint zu NativeInt in der Deklaration von Param1 und Param2 hat sich der Fehler behoben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:03 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