![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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