Code: Alles auswählen
procedure Summe(a,b: integer; var c: integer);
begin
c:= a+b;
end;
Code: Alles auswählen
var s: integer;
summe(2, 3, s);
Code: Alles auswählen
procedure Summe(a,b: integer; var c: integer);
begin
c:= a+b;
end;
Code: Alles auswählen
var s: integer;
summe(2, 3, s);
Code: Alles auswählen
var s: integer=0; //<----
summe(2, 3, s);
Code: Alles auswählen
procedure summe(a, b: integer; {$ifdef dos} var {$else} out {$endif} s: integer);
Code: Alles auswählen
procedure summe(a, b : integer; var s : integer);
begin
s := a+b;
end;
var s : integer;
begin
s := 0;
summe(3, 4, s);
end.
Das mag für Integer schon stimmen - aber was ist, wenn s ein komlexerer Typ ist zB ein Record? Irgendwann mal werde ich speziell dieses Projekt auch nach OO umstellen und dann kann ich mir die VAR sparen weil ich die Ergebnisse dann als Klassenattribute halte, aber solange...fliegermichl hat geschrieben: Mi 29. Jan 2025, 14:04 Du brauchst doch die Variable nur zu initialisieren. Dann erscheint keine Warnung mehr.Code: Alles auswählen
procedure summe(a, b : integer; var s : integer); begin s := a+b; end; var s : integer; begin s := 0; summe(3, 4, s); end.
Code: Alles auswählen
{$HINTS OFF} summe(3, 4, s); {$HINTS ON}
Code: Alles auswählen
{$WARN 5057 OFF} summe(3, 4, s); {$WARN 5057 ON}
Das es Result in TP nicht gab, kann ich mir vorstellen, aber folgendes sollte gehen:Ich habe einige Methoden, wo ich - weil die Funktionstypen zu komplex oder nicht erlaubt sind in Turbo-Pascal - die Ausgabe so organisiere:
Code: Alles auswählen
function Test(a, b: integer): integer;
begin
Test := a + b;
end;
Es geht darum, wenn der Ergebnistyp kein einfacher Typ sein soll sondern zB ein record oder ein anderer selbsterstellter Typ.Mathias hat geschrieben: Mi 29. Jan 2025, 17:47Das es Result in TP nicht gab, kann ich mir vorstellen, aber folgendes sollte gehen:Ich habe einige Methoden, wo ich - weil die Funktionstypen zu komplex oder nicht erlaubt sind in Turbo-Pascal - die Ausgabe so organisiere:Code: Alles auswählen
function Test(a, b: integer): integer; begin Test := a + b; end;
Code: Alles auswählen
function Konvertiere(x.y : String): TAdresse;
Code: Alles auswählen
procedure Konvertiere(x,y : String; var ergebnis: TAdresse);
Code: Alles auswählen
a, b = berechne (x. y)
Code: Alles auswählen
procedure berechne(x,y : integer; var a, b: integer);
Doch schon, aber...Jorg3000 hat geschrieben: Do 30. Jan 2025, 00:35 Was ist denn mit dem o.g. {$HINTS OFF} oder {$WARN 5057 OFF} , kommt das nicht in Frage?
Code: Alles auswählen
procedure berechne(x,y: String; {$ifdef dos} var {$else} out {$endif} a, b: integer);
Da würde ich dann aber global ein {$WARN 5057 OFF} setzen, und Feierabend.alfware17 hat geschrieben: Do 30. Jan 2025, 10:14Doch schon, aber...Jorg3000 hat geschrieben: Do 30. Jan 2025, 00:35 Was ist denn mit dem o.g. {$HINTS OFF} oder {$WARN 5057 OFF} , kommt das nicht in Frage?
Wenn ich was dazuschreiben muß bei jedem Aufruf, dann ist das mehr als wenn ich es bei der Deklaration dazuschreiben muß (wenn 1..N Aufrufe). Da wäre ein
schon ökonomischer und ich bin es auch gewohnt. Da ich viel Code zwar erst in Lazarus schreibe und dann nachschaue, was sagt Turbo-Pascal dazu, generell aber schon mal mitplane, was alles an Einschränkungen bzw dann Varianten wartet. Schönes Beispiel neulich mein Stack, wo ich unbedingt ein ganzes 16x16 Sudoku unterbringen wollte. In Lazarus, so riet mir ChatGpt war es einfach ein generischer Stack. Die Unit dazu wurde dann aber mit bedingter Compilierung dann doch sehr bunt und der Aufruf im Hauptprogramm nochmal mit bedingter Compilierung.Code: Alles auswählen
procedure berechne(x,y: String; {$ifdef dos} var {$else} out {$endif} a, b: integer);
Ich verstehe auch nicht, warum sich die Leute immer so an diesen Hints abarbeiten.Zvoni hat geschrieben: Do 30. Jan 2025, 10:31 Andererseits verstehe ich auch nicht, was an den Hints so schlimm ist.