![]() |
String in Variablen "umwandeln"
Servus,
wuste jetzt nicht ganz wie ich das Thema nennen soll. Habe eine Text- bzw. Inidatei mit folgendem Aufbau: Zitat:
Habe es zur Zeit so gelöst
Delphi-Quellcode:
Finde das aber recht unübersichtlich. Es gibt bestimmt was eleganteres wie oben, oder?
const
options : array[1..4] of String = ( ('options_1'), ('options_2'), ... ); begin //... Text := LowerCase(ini.ReadString('option',options[i],'')); if Text = 'options_1' then obj.options_1 := text; //... mfg |
Re: String in Variablen "umwandeln"
|
Re: String in Variablen "umwandeln"
TIniFile ist doch das gleiche wie TMemIniFile. Damit kann ich das auch nicht machen.
|
Re: String in Variablen "umwandeln"
So einfach wie in PHP gehts leider nicht :mrgreen: dafür ist Delphi aber halt typsicher. Du könntest dir aber, wenn du D2010 im Einsatz hast, RTTI anschauen. Daniel hat da ein schönes
![]() |
Re: String in Variablen "umwandeln"
Zitat:
Was verstehst Du denn unter einer Variablen? Eine Variable pro "Option"?
Delphi-Quellcode:
Gruß
var
option_1 : string; option_2 : string; Text := LowerCase(ini.ReadString('option','option_1','')); if Text <>'' then option_1 := text; Text := LowerCase(ini.ReadString('option','option_2','')); if Text <>'' then option_2 := text; K-H |
Re: String in Variablen "umwandeln"
Zitat:
Delphi-Quellcode:
const
options : array[1..4] of String = ( ('options_1'), ('options_2'), ... ); begin //... Text := LowerCase(ini.ReadString('option',options[i],'')); if options[i] = 'options_1' then //hier obj.options_1 := text; //... Zitat:
um sourcen zu sparen. Zitat:
|
Re: String in Variablen "umwandeln"
Vielleicht etwas umständlich, aber es geht. :stupid:
Delphi-Quellcode:
Edit: Du kannst allerdings nicht mehr zuordnen, unter welchem Namen welcher Wert stand. OptionValues[0] enthält beispielsweise den ersten Wert in dem Abschnitt [option].
procedure TForm2.Button1Click(Sender: TObject);
var MyIni: TIniFile; i: Integer; OptionNames: TStringList; OptionValues: array of string; // Enthält die Werte begin // Ini lesen MyIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'options.ini'); try OptionNames := TStringList.Create; try // alle Einträge (Namen) unter [option] einlesen und in StringList speichern MyIni.ReadSection('option', OptionNames); // Werte auslesen und dem Array hinzufügen SetLength(OptionValues, OptionNames.Count); for i := 0 to OptionNames.Count - 1 do begin OptionValues[i] := MyIni.ReadString('option', OptionNames[i], ''); end; finally FreeAndNil(OptionNames); end; finally FreeAndNil(MyIni); end; // Sodele, hier sind nun alle Werte im Array // Testausgabe: for i := Low(OptionValues) to High(OptionValues) do begin ShowMessage(OptionValues[i]); end; end; |
Re: String in Variablen "umwandeln"
Zitat:
Wenn es so nicht geht muss ich das ganze anders lösen, habe schon einen Ansatz..... |
Re: String in Variablen "umwandeln"
Ich habe ganz schlampig was zusammen getippt. Es ist nicht sauber, aber vielleicht kannst du in der Richtung etwas machen:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } type TOptData = record OptName: string; OptValue: string; end; type TOptDataArray = array of TOptData; function GetOptionsFromIni: TOptDataArray; function GetOptValue(OptData: TOptDataArray; OptName: string): string; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} function TForm1.GetOptionsFromIni: TOptDataArray; var MyIni: TIniFile; i: Integer; OptionNames: TStringList; OptionValues: array of string; OptionData: TOptDataArray; begin MyIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'options.ini'); try OptionNames := TStringList.Create; try MyIni.ReadSection('option', OptionNames); SetLength(OptionData, OptionNames.Count); for i := 0 to OptionNames.Count - 1 do begin OptionData[i].OptName := OptionNames[i]; OptionData[i].OptValue := MyIni.ReadString('option', OptionNames[i], ''); end; finally FreeAndNil(OptionNames); end; finally FreeAndNil(MyIni); end; Result := OptionData; end; function TForm1.GetOptValue(OptData: TOptDataArray; OptName: string): string; var i: Integer; begin Result := ''; for i := Low(OptData) to High(OptData) do begin if OptData[i].OptName = OptName then begin Result := OptData[i].OptValue; break; end; end; end; // Beispielaufruf procedure TForm1.Button1Click(Sender: TObject); var OptionValues: TOptDataArray; begin OptionValues := GetOptionsFromIni; ShowMessage(GetOptValue(OptionValues, 'options_1')); ShowMessage(GetOptValue(OptionValues, 'options_4')); end; end. |
Re: String in Variablen "umwandeln"
Hallo,
wenn man statt ReadSection die Methode ReadSectionValues verwendet, wird die Sache etwas einfacher:
Delphi-Quellcode:
Gruß Hawkeye
var
Options: TStrings; Ini: TMemIniFile; i: Integer; OptionName: string; OptionValue: string; begin Options := TStringList.Create; try Ini := TMemIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Options.ini'); try Ini.ReadSectionValues ('option', Options); finally Ini.Free; end; for i := 0 to Options.Count - 1 do begin OptionName := Options.Names[i]; OptionValue := Options.Values[OptionName]; // oder Options.ValueFromIndex[i] ShowMessage (Format('Wert von %s: %s', [OptionName, OptionValue])); end; finally Options.Free; end; end; |
Re: String in Variablen "umwandeln"
Ok dann habe ich zwar nicht für jede Option eine Variable, aber über eine Funktion wie ob GetOption... könnte man das auch lösen. danke für die ideen...
mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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 by Thomas Breitkreuz