AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein InnoSetup / Pascal Script: Wie array of string übergeben?
Thema durchsuchen
Ansicht
Themen-Optionen

InnoSetup / Pascal Script: Wie array of string übergeben?

Ein Thema von Phoenix · begonnen am 6. Mai 2021
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#1

InnoSetup / Pascal Script: Wie array of string übergeben?

  Alt 6. Mai 2021, 14:02
Irgendwie muss mein Pascal über die letzten Jahre arg eingerostet sein.
Ich baue gerade ein InnoSetup-Script, und habe ein Problem beim Formatieren von CustomMessages mit Platzhaltern.

Folgendes funktioniert:
Delphi-Quellcode:
var
   message: string;
begin
   message := CustomMessage('MyCustomMessageName'); // Die Message sei: 'Das %1 ist %2 ein %3 Test'
   result := FmtMessage(message, [IntToStr(1), 'Some text', IntToStr(3)]); // Array mit den Argumenten wird direkt übergeben
end;
Am Ende habe ich "Das 1 ist Some text ein 3 Test".

Folgendes funktioniert leider nicht:
Delphi-Quellcode:
var
   message: string;
   args: Array of String;
begin
   message := CustomMessage('MyCustomMessageName'); // Die Message sei: 'Das %1 ist %2 ein %3 Test'
   args := [IntToStr(1), 'Some text', IntToStr(3)]; // Array wird hier vorbereitet...
   result := FmtMessage(message, args); // ... und als variable übergeben.
end;
Hier wirft mir InnoSetup zur Laufzeit einen "Type Mismatch"-Fehler beim Aufruf von FmtMessage.
FmtMessage ist laut InnoSteup Doku folgendermassen definiert: function FmtMessage(const S: String; const Args: array of String): String;
Eigentlich will ich folgende Hilfsfunktion realisieren:
Delphi-Quellcode:
function FormatCustomMessage(const messageId: String; const arguments: Array of String): String;
begin
   result := FmtMessage(CustomMessage(messageId), arguments); // array soll aus den Parametern kommen
end;
Und dann so aufrufen: Log(FormatCustomMessage('CreatedCustomWizardPage', [IntToStr(result.Id), caption, IntToStr(previousPageId)]));
Die Frage lautet also, wie kann ich in Inno / PascalScript das Array of String mit den Argumenten von einem Funktionsaufruf auf den anderen durchschleifen?
Irgendwie komm ich mir grad etwas doof vor, weil das doch recht easy sein müsste, oder?

Vielen lieben Dank,

Sebastian
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 07:41 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