![]() |
Textimport und export
Guten Tag alle zusammen,
ich hoffe mich absoluten Neuling kann hier einer mal am Arm packen und in die richtige Richtung werfen *gg* Ich habe mir mit dem Programm "Inno Setup" eine *.exe erstellt welche auch tadellos funktioniert, nur noch nicht ganz fertig ist und genau der Punkt der noch offen ist ist für mich der Schwerste^^ Meine *.exe installiert ein paar Anwendungen welche nicht der Rede wert sind (keine Treibe, DLL´s, Registrierungseinträge o.ä.). Es sind einfach nur ein paar Dateien welche in ein vom Benutzer wählbares Instalationsverzeichnis kopiert werden, zwei Dateien die nach "localappdata" kopiert werden und eine Datei die in ein zusätzlich vom Benutzer gewähltest Verzeichnis kopiert wird. Mir geht es nun um eine *.conf Datei welche mit jedem Editor bearbeitbar ist, denn in diese müssen die vom Benutzer gewählten Pfadangaben nach dem kopieren der Datei an bestimmte Positionen eingetragen werden. Natürlich habe ich schonmal versucht etwas selbst hin zu kriege mit FileToString als AnsiString und StringToFile, jedoch hapert es da bei mir bissl an der Erfahrung und dem Verständnis. Nun hoffe ich das mir jemand bei meinem Vorhaben helfen kann, sollten noch Fragen jeglicher Art vorhanden sein so stürzt euch auf mich. MfG Benny Zur Veranschaulichung mal meinen bisherigen Code:
Delphi-Quellcode:
var
UserDirPage : TInputDirWizardPage; UserFolder : string; function InitializeSetup: boolean; begin UserFolder := ''; Result := true; end; function InstallCae(Param:String):String; begin result := UserDirPage.Values[0] ; end; procedure InitializeWizard; begin UserDirPage := CreateInputDirPage(wpSelectDir, ExpandConstant('{cm:CAEVerzeichnis}'), ExpandConstant('{cm:SpeicherortPRTDEF}'), ExpandConstant('{cm:SpeicherzielPRTDEF}'), false, 'Neuer Ordner'); //"Klicken sie weiter..." Meldung UserDirPage.Add(SetupMessage(msgSelectDirBrowseLabel)); //Standardpfad in der Verzeichnisauswahl UserDirPage.Values[0] := ExpandConstant( 'C:\CAE2000\'); end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); //Code für deinstallation begin if CurUninstallStep=usPostUninstall then FileCopy('{code:InstallCae}\Backup\PRTDEF.GER','{code:InstallCae}\PRTDEF.GER',false); DelTree('{code:InstallCae}\Backup\*', true, true, true); end; |
AW: Textimport und export
Ich weiß jetzt nicht ganz genau, ob ich dich richtig verstanden habe, wenn du diese config-Datei im Editor bearbeiten lassen magst, könntest du von Delphi aus einfach den Editor folgendermaßen aufrufen:
Delphi-Quellcode:
ShellExecute(0, NIL, PCHAR('"NOTEPAD.EXE"'), PCHAR('"' + DATEINAME + '"'), NIL, SW_SHOWDEFAULT);
|
AW: Textimport und export
Nee nee nee, sorry da hab ich mich etwas undeutlich ausgedrückt.
Das mit dem Editor habe ich nur erwähnt das ihr wisst um was es sich handelt, also das es keine HEX Werte oder sonstiges sind, sondern reiner Klartext der in der Datei vorhanden ist. Ich möchte nun durch z.B. StringToFile erreichen das diese Pfadangaben automatisch in die *.conf Datei eingetragen werden, sodass kein Benutzer darin arbeiten muss (denn ich kenne meine Pappenheimer und weiß das viele es nicht schaffen werden, egal wie gut man es erklärt *gg*) |
AW: Textimport und export
OK, dann rate ich zu einer TStringList, so in der Art:
Delphi-Quellcode:
EDIT: Wenn vorher schon was drin steht kannst zuvor ein aList.LoadFromFile machen.
procedure Fillconf;
var aList : TStringList; begin aList := TStringList.Create; aList.Add('Textzeile'); aList.Add('noch eine Zeile'); aList.SaveToFile('c:\temp\test.conf'); aList.Free; end; |
AW: Textimport und export
Soweit ich weiß fügt diese Methode die Daten immer ans Ende der Datei mit ein oder?
Natürlich habe ich vergessen zu erwähnen das es bestimmte Positionen sind an denen die Pfadangaben eingetragen werden müssen. Im genauen wären es: Installationsverzeichnis der Anwendung: Zeile 299, Cursorposition 23 und Zeile 357, Cursorposition 10 Zusätzlich gewähltes Verzeichnis über function "InstallCae": Zeile 356, Cursorposition 10 Das wären die Stellen an denen es eingetragen werden muss. |
AW: Textimport und export
Wie gesagt mit LoadFromFile bekommst die gesamte conf-Datei erstmal in die Stringliste rein. Die StringList beginnt immer mit 0. Also aList[0] wäre dann die erste Zeile. Mithilfe der copy-Funktion kannst du dann diesen String ändern, ungefähr so:
Delphi-Quellcode:
(Hinweis: Code ungetestet)
aList[298] := copy(aList[298],1,23)+'einzufügender Text'+copy(aList[298],24,length(aList[298]));
|
AW: Textimport und export
![]() |
AW: Textimport und export
Ahh okay sorry das wusste ich noch nicht das dies so zusammen gehört, mein Fehler.
|
AW: Textimport und export
Hmmm ich habe nun einmal folgenden Code eingebaut
Delphi-Quellcode:
Jedoch finde ich nach dem durchführen der *.exe keinen Eintrag "Hallo" bzw. es ändert sich nichts.
procedure AfterInstallConf();
var aList : TStringList; begin aList.LoadFromFile('C:\Users\BWolonkieiwicz\AppData\Local\DOSBox\dosbox-SVN_MB6.conf'); aList := TStringList.Create; aList[361] := copy(aList[361],1,1)+'Hallo'+copy(aList[361],24,length(aList[361])); aList.SaveToFile('C:\Users\BWolonkieiwicz\AppData\Local\DOSBox\dosbox-SVN_MB6.conf'); aList.Free; end; |
AW: Textimport und export
Ein LoadFromFile kann erst funktionieren, wenn die TStringListe zuvor erzeugt(Create) wurde.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz