Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
608 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Zerteilen eines String in einzelne Zeichen

  Alt 25. Jun 2021, 23:32
Mit Add und was habe ich ganz ehrlich noch nie hantiert und anscheinend funktionieren die auch nicht mit dem Angegebenen Compilerschalter.
Wir sollen alle Pascal Programme mit diesen Compilerschaltern erstellen, dann fangen wir nächstes Semester mit Java an.
Doch. hs.Add() in #9 mit {$X-} Schalter funktioniert.

Du musst aber bei Verwendung von {$X-} (siehe oben in #9 erklärt) bei jeder Funktion das Resultat abholen; egal ob dich dieses nun interessiert oder nicht. hs.add(was); kann nicht kompiliert werden, weil add() eine Funktion ist und einen integer Wert zurück liefert. Du musst also diesen integer abholen:
Wenn du schreibst dummy := hs.add( was ); kannst du den Code mit {$X-} kompilieren.

Weiteres Beispiel?

Die Funktion tu_was multipliziert a mit 3 und gibt true zurück, wenn das Resultat gerade ist:

Delphi-Quellcode:
function tu_was( var a : integer ) : boolean;
begin
  a := a*3;
  tu_was := a mod 2 = 0;
end;
Wenn du gar nicht daran interessiert bist, ob das Resultat gerade ist, sondern nur am neuen Wert des Arguments, dann könntest du tu_was so aufrufen:

Delphi-Quellcode:
var b : integer;

begin
  b := 11;
  tu_was( b );
  writeln( b );
  readln;
end.
b ist am Anfang 11. In tu_was wird 11 mit 3 multipliziert und zurückgegeben. Ausgegeben wird 33.

Der Code oben kann aber nicht kompiliert werden, wenn du {$X-} gesetzt hast. Grund: Du hast das Resultat der Funktion tu_was nicht abgeholt.

Wenn du schreibst:

Delphi-Quellcode:
var b : integer;
    hb : boolean;
begin
  b := 11;
  hb := tu_was( b );
  writeln( b );
  readln;
end.
funktioniert's mit {$X-}. Grund: Du holst nun mittels hb := das Resultat von tu_was ab.

Es gibt natürlich zig andere Lösungswege für deine Aufgabe. Tipp: Weniger nach Lösungen googlen und mehr selber ausprobieren .
Michael Gasser

Geändert von Michael II (26. Jun 2021 um 01:28 Uhr)
  Mit Zitat antworten Zitat