Umwandlung von Zahlen zu Zeichenketten

Falls Sie nicht direkt ausgeben, sondern beliebig viele Variablen zu einer vollständigen Zeichenkette verbinden möchten, bietet Pascal drei gängige Implementierungsmethoden:

Verkettung mit spezialisierten Umwandlungsfunktionen

***ToStr + Zeichenkettenverknüpfung mit +

Wandeln Sie einzelne Datentypen mithilfe dedizierter Umwandlungsfunktionen um und verbinden Sie anschließend die Zeichenketten mit dem Operator +:

uses SysUtils;

var
  MyInt: Integer;
  MyStr: string;
begin
  MyInt := 123;
  MyStr := 'My int number is ' + IntToStr(MyInt) + ', and the value of Pi is ' + FloatToStr(Pi);
end;Code-Sprache: JavaScript (javascript)

Häufig genutzte Begleitfunktionen (alle in der Einheit SysUtils enthalten):

  • Zahl zu Zeichenkette: IntToStr, FloatToStr, FormatFloat (individuelle Gleitkommaformatierung)
  • Zeichenkette zurück zu numerischem Wert: StrToInt, StrToIntDef, StrToFloat

Vollständig lauffähiges Beispiel

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

uses SysUtils;

var
  MyInt: Integer;
  MyStr: string;
begin
  MyInt := 180;
  MyStr := 'My int number is ' + IntToStr(MyInt) + ', and the value of Pi is ' + FloatToStr(Pi);
  WriteLn(MyStr);
end.Code-Sprache: PHP (php)
Vorteile
  1. Äußerst flexibel; aufgeteilte Funktionen decken fast alle Typen wie Ganzzahlen, Gleitkommazahlen und Datumsangaben ab;
  2. Umfassende passende Rückumwandlungsfunktionen, praktisch beim Auswerten von Benutzereingabe-Zeichenketten.
Nachteile

Bei vielen Variablen entsteht durch mehrschichtige +-Verkettung langwieriger, schlecht lesbarer Code.


Formatierungsfunktion Format

Format (vergleichbar mit sprintf aus der C-Sprache)

Grundsyntax

uses SysUtils;

var
  Res: string;
  MyInt: Integer;
  MyFloat: Double;
  MyString: string;
begin
  Res := Format('%d %.4f %s', [MyInt, MyFloat, MyString]);
end;Code-Sprache: JavaScript (javascript)
  • %d: Platzhalter für Ganzzahl; %.4f: Gleitkommazahl mit vier Nachkommastellen; %s: Platzhalter für Zeichenkette
  • Der zweite Parameter ist ein Konstantenarray, das die Platzhalter nacheinander befüllt

Vollständiges Beispiel

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

uses SysUtils;

var
  Res: string;
  MyInt: Integer;
  MyFloat: Double;
  MyString: string;
begin

  // set value
  MyInt := 169;
  MyFloat := 0.618;
  MyString := 'foxdevelop.com';

  Res := Format('%d %.4f %s', [MyInt, MyFloat, MyString]);
  WriteLn(Res);
end.Code-Sprache: PHP (php)

Vorteile

  1. Formatvorlage und Daten sind voneinander getrennt für eine übersichtliche Struktur; bei mehrsprachiger Softwareübersetzung muss nur die Vorlagen-Zeichenkette angepasst werden, die Variablenliste bleibt unverändert;
  2. Keine versteckte Compilerlogik. Mit selbst definierten Funktionen mit variablen Parametern array of const lässt sich diese Formatlogik wiederverwenden und Parameter zur nativen Verarbeitung an Format weiterreichen.

Nachteile

Der Compiler prüft zur Kompilierzeit nicht, ob Platzhalter und Variablentyp übereinstimmen; bei Typinkongruenz wird zur Laufzeit eine Ausnahme EConvertError für die Umwandlung ausgelöst (es kommt kein Speicherzugriffsabsturz).


WriteStr

Ausgabe von Write in eine Zeichenkettenvariable speichern

Zweck: Das Verhalten ist nahezu identisch mit Write/WriteLn, allerdings wird nicht auf die Konsole ausgegeben, sondern das Ergebnis in die erste Zielzeichenkettenvariable geschrieben:

var S: string;
begin
  WriteStr(S, 'Pi value: ', Pi:1:4);
end;Code-Sprache: JavaScript (javascript)

Vollständiges Beispiel

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

uses SysUtils;

var S: string;
begin
  WriteStr(S, 'Pi value: ', Pi:1:4);
  WriteLn(S);
end.Code-Sprache: PHP (php)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert