2017-07-13 7 views
1

Auf WizardForm.InstallingPage schneidet die WizardForm.FilenameLabel automatisch die Zeichenfolge ab, die den Dateipfad enthält, um den Laufwerksbuchstaben am Anfang, gefolgt von dem maximal anzeigbaren Pfad von der obersten Ebene der Pfad, um die Größe des Labels anzupassen, so dass der Dateiname immer z. B. angezeigt wird C:\...\LongFilePathNameWithMultipleSubDirectories\Filename.ext.Inno-Setup kürzt Dateipfad-Zeichenfolge, um DateinameLabel zu passen

Ich habe schaute auf die Length, Pos, Copy und ExtractFileDrive String-Funktionen, aber wenn man bedenkt, dass es eine fast unendliche Anzahl Pfad und Dateiname Möglichkeiten, wie der Benutzer kann jeden Installationspfad wählen, die sie wünschen, ich kämpfen, um zu arbeiten einen Weg, um die maximal mögliche Länge des Pfades anzuzeigen, ohne den Dateinamen abzuschneiden.

Ich glaube, ich eine Funktion wie Pos benötigen, die die Anzahl der Spiele und den Index gibt für jeden \ es findet, was bedeuten würde, ich Length zwischen jedem Index verwenden könnte, um zu bestimmen, wo man Copy aus, aber ich habe nicht gewesen in der Lage, einen Weg zu finden, dies zu tun.

+0

Also wollen Sie die maximale Anzahl von Zeichen in einem Pfad vor dem "..." Abschneiden? - Das ist eine wirklich seltsame Sache - Sie müssen die spezifische Schriftart in Betracht ziehen, die verwendet wird, den Quellcode von Inno herunterladen und MinimizePathName() in cmnfunc.pas betrachten, um zu sehen, wie es mit GetTextWidth() funktioniert. –

+0

Ich möchte im Grunde emulieren, was Inno Setup für das 'FilenameLabel' Display beim Extrahieren von Dateien tut. Wenn 'C: \ Erster Ordner \ Zweiter Ordner \ Dritter Ordner \ Dateiname.ext' zu lang ist, um' DateinameLabel' zu enthalten, wird die Datei wie folgt abgeschnitten: C: \ ... \ Zweiter Ordner \ Dritter Ordner \ Dateiname. ext 'oder' C: \ ... \ Third Folder \ Filename.ext' passend, um zu passen, aber auch die maximale Menge des Pfades anzuzeigen, die möglich ist. –

+1

Wie in http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_minimizepathname? –

Antwort

3

Die Funktion MinimizePathName() ist für das Scripting verfügbar, sie nimmt eine Zeichenfolge & eine Schriftart und gibt eine umformatierte Zeichenfolge zurück, die in eine gegebene Anzahl von Pixeln in der angegebenen Schriftart passt.

Verwandte Themen