Wie verwenden Sie die Pascal Inno Setup ExpandConstant mit einer string variable?

Für eine installation Programm brauche ich zum erstellen von Ordner-links.

Für diese erstelle ich den Ziel-Ordner über die "[Dirs] " Sektion. Kein problem.

Dann, '[Code]' - Sektion, mit der Funktion 'CurStepChanged(ssPostInstall)', Las ich eine temporäre Datei installiert, um eine Liste der Ordner-links erstellen. Jede Zeile der Datei enthält einen Ziel-Ordner-Pfad-Namen, und einen link-Pfad-Namen... Mit Inno Setup Konstanten.
Jeder Wert wird gelesen und gespeichert, als 'String' - variable.

Wenn ich übergeben Sie die string-Variablen auf 'ExpandConstant(lLinkTarg)', bekomme ich einen internen Laufzeitfehler auf jeder die Namen von Konstanten.

Wenn ich copy paste den string-Inhalt zu einem 'ExpandConstant('{#gRepNasSvg}\UT{code:getProjetc}\Docs')' - Aufruf, dann funktioniert es...

Jede Andeutung über das, was ich falsch mache ?

Vielen Dank im Voraus.
L.

procedure CurStepChanged(CurStep: TSetupStep);
var
    lFileName: String;
    lLinkList: TArrayOfString;
    lIndex: Integer;
    lLinkLine: String;
    lLinkName: String;
    lLinkTarg: String;
    lSepPos: Integer;

begin
    //Après l'étape d'installation...
    if CurStep = ssPostInstall then
        begin
            //Si le fichier listant les liens à créer existe...
            lFileName := ExpandConstant('{tmp}') + '\' + ExpandConstant('{#gFicListeLiens}');
            if FileExists(lFileName) then
                begin
                    //Lecture du contenu du fichier.
                    LoadStringsFromFile(lFileName, lLinkList);

                    //Pour chaque ligne lue...
                    for lIndex := 0 to GetArrayLength(lLinkList) - 1 do
                    begin
                        //Lecture de la ligne.
                        lLinkLine := Trim(lLinkList[lIndex]);

                        //Si ce n'est pas un commentaire...
                        if (Length(lLinkLine) > 0) and (lLinkLine[1] <> ';') then
                            begin
                                //Recherche du séparateur.
                                lSepPos := Pos('>', lLinkLine);
                                if lSepPos > 0 then
                                    begin
                                        //Get target location.
                                        lLinkTarg := Trim(Copy(lLinkLine, 1, lSepPos - 1));
MsgBox(lLinkTarg, mbInformation, MB_OK);

                                        //NEXT LINE FAILS !
                                        lLinkTarg := ExpandConstant(lLinkTarg) ;
MsgBox(lLinkTarg, mbInformation, MB_OK);

                                        //Get link location.
                                        lLinkName := Trim(Copy(lLinkLine, lSepPos + 1, Length(lLinkLine) - lSepPos));
MsgBox(lLinkName, mbInformation, MB_OK);

                                    end
                            end
                    end
                end
        end
end;

Einige Sachen, die ich vergessen habe.

Link Beschreibung die variable ist von der form '{#gRepNasSvg}\UT{code:getProjetc}\Docs'...

InformationsquelleAutor zePit | 2012-08-17
Schreibe einen Kommentar