Index: VerpakkingsDefinitie/WS/ProductsAgent.pas =================================================================== diff -u -r609 -r610 --- VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 609) +++ VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 610) @@ -7,12 +7,6 @@ SelectService, OptiServerService, UI_Data, Vcl.Dialogs, Soap.InvokeRegistry; -// Resource strings are stored as resources and linked into the executable or -// library so that they can be modified without recompiling the program. -resourcestring - SELECT_SERVER_URL = 'http://cacheaccept2010:57772/csp/dev1/WS.Prod.Select.CLS'; - OPTI_SERVER_URL = 'http://cacheaccept2010:57772/csp/dev1/WS.Prod.OptiBox.OptiServer.CLS'; - type TZoekMethode = (KortTekst, IdentificatieNr, LeveranciersRef, Tekst); @@ -59,7 +53,7 @@ procedure RegistreerMislukteVerpakkingMetaQuery(ProductVerpakkingMetaContext: TProductVerpakkingMetaContext; pxStatusObj: OptiServerService.pxStatus); public - Constructor Create(); + constructor Create(SelectServerUrl: string; OptiServerUrl: string); // UI procedure LaadUIInstellingen(UserContext: TUserContext; UiInstellingenContext: TUiInstellingenContext); // Product @@ -89,10 +83,12 @@ uses StrUtils, Xml.XMLIntf, Xml.XMLDoc; -constructor TProductsAgent.Create(); +constructor TProductsAgent.Create(SelectServerUrl: string; OptiServerUrl: string); begin - FSelectServerSoap := SelectService.GetProdSelectServerSoap(false, SELECT_SERVER_URL, nil); - FOptiBoxServerSoap := OptiServerService.GetOptiBoxServerSoap(false, OPTI_SERVER_URL, nil); + inherited Create(); + + FSelectServerSoap := SelectService.GetProdSelectServerSoap(false, SelectServerUrl, nil); + FOptiBoxServerSoap := OptiServerService.GetOptiBoxServerSoap(false, OptiServerUrl, nil); end; // https://stackoverflow.com/questions/30156172/how-to-concatenate-array-of-string-elements-into-a-string/46523477 Index: VerpakkingsDefinitie/Main.dfm =================================================================== diff -u -r593 -r610 --- VerpakkingsDefinitie/Main.dfm (.../Main.dfm) (revision 593) +++ VerpakkingsDefinitie/Main.dfm (.../Main.dfm) (revision 610) @@ -18,9 +18,9 @@ object PanelMain: TPanel AlignWithMargins = True Left = 0 - Top = 40 + Top = 81 Width = 1184 - Height = 671 + Height = 630 Margins.Left = 0 Margins.Top = 0 Margins.Right = 0 @@ -32,12 +32,13 @@ ParentShowHint = False ShowHint = True TabOrder = 0 - ExplicitHeight = 705 + ExplicitTop = 40 + ExplicitHeight = 671 end object PanelGebruiker: TPanel AlignWithMargins = True Left = 0 - Top = 0 + Top = 41 Width = 1184 Height = 40 Margins.Left = 0 @@ -49,5 +50,25 @@ Color = clRed ParentBackground = False TabOrder = 1 + ExplicitTop = 0 end + object PanelTestOmgeving: TPanel + Left = 0 + Top = 0 + Width = 1184 + Height = 41 + Align = alTop + BevelOuter = bvNone + Caption = 'Test omgeving' + Color = clOlive + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentBackground = False + ParentFont = False + TabOrder = 2 + ExplicitTop = -1 + end end Index: VerpakkingsDefinitie/VerpakkingsDefinitie_Icon.ico =================================================================== diff -u Binary files differ Index: VerpakkingsDefinitie/ApplicationContext.pas =================================================================== diff -u -r607 -r610 --- VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 607) +++ VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 610) @@ -12,21 +12,37 @@ // SUB CONTEXTS: klassen die overeenkomen met bepaalde sub-context (bv. alles gerelateerd met authenticatie). -// - User type + // Configs (uit INI bestand) + TConfigsContext = class + private + FIsProductieOmgeving: boolean; + // Productie + FSelectServerUrl: string; + FOptiServerUrl: string; + FUserServerUrl: string; + public + property IsProductieOmgeving: boolean read FIsProductieOmgeving write FIsProductieOmgeving; + property SelectServerUrl: string read FSelectServerUrl write FSelectServerUrl; + property OptiServerUrl: string read FOptiServerUrl write FOptiServerUrl; + property UserServerUrl: string read FUserServerUrl write FUserServerUrl; + end; + + // - User + TUserContext = class(TSubject) private FSessionKey: string; FGebruikersNaam: string; - FIsOK: Boolean; + FIsOK: boolean; FErrorMessage: string; FInternalErrorMessage: string; public procedure NotifyChanged(); property SessionKey: string read FSessionKey write FSessionKey; property GebruikersNaam: string read FGebruikersNaam write FGebruikersNaam; - property IsOK: Boolean read FIsOK write FIsOK; + property IsOK: boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; @@ -43,7 +59,7 @@ FOptiTypeByKey: TDictionary; FOptiTypeByValue: TDictionary; - FIsOK: Boolean; + FIsOK: boolean; FErrorMessage: string; FInternalErrorMessage: string; public @@ -58,7 +74,7 @@ property OptiTypes: TDictionary read FOptiTypeByKey; property OptiTypesByValue: TDictionary read FOptiTypeByValue; - property IsOK: Boolean read FIsOK write FIsOK; + property IsOK: boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; @@ -91,7 +107,7 @@ FProducten: TList; FGeselecteerdProduct: TProductInformatie; - FIsOK: Boolean; + FIsOK: boolean; FErrorMessage: string; FInternalErrorMessage: string; @@ -100,13 +116,13 @@ public constructor Create(); procedure NotifyChanged(); - procedure Reset(Notify: Boolean = True); + procedure Reset(Notify: boolean = True); property Producten: TReadOnlyList read GetProductenLijst; procedure SetProducten(Collection: TEnumerable); property GeselecteerdProduct: TProductInformatie read FGeselecteerdProduct write SetGeselecteerdProduct; - property IsOK: Boolean read FIsOK write FIsOK; + property IsOK: boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; @@ -216,7 +232,7 @@ property Parameters: TReadOnlyList read GetParametersLijst; procedure SetParameters(Collection: TEnumerable); - function Equals(Obj: TObject): Boolean; override; + function Equals(Obj: TObject): boolean; override; constructor Create(); end; @@ -225,7 +241,7 @@ FProductVerpakkingen: TList; FGeselecteerdeVerpakking: TProductVerpakking; - FIsOK: Boolean; + FIsOK: boolean; FErrorMessage: string; FInternalErrorMessage: string; @@ -234,7 +250,7 @@ public constructor Create(); procedure NotifyChanged(); - procedure Reset(Notify: Boolean = True); + procedure Reset(Notify: boolean = True); property ProductVerpakkingen: TReadOnlyList read GetProductVerpakkingenLijst; procedure SetProductVerpakkingen(Collection: TEnumerable); @@ -243,7 +259,7 @@ function GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TReadOnlyList; property GeselecteerdeVerpakking: TProductVerpakking read FGeselecteerdeVerpakking write SetGeselecteerdeVerpakking; - property IsOK: Boolean read FIsOK write FIsOK; + property IsOK: boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; @@ -265,7 +281,7 @@ FProductGroepen: TList; FMetas: TList; - FIsOK: Boolean; + FIsOK: boolean; FErrorMessage: string; FInternalErrorMessage: string; @@ -278,7 +294,7 @@ property Metas: TReadOnlyList read GetProductMetas; procedure SetMetas(Collection: TEnumerable); - property IsOK: Boolean read FIsOK write FIsOK; + property IsOK: boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; end; @@ -287,13 +303,15 @@ // Application context bevat alle sub-contexts TApplicationContext = class private + FConfigsContext: TConfigsContext; FUserContext: TUserContext; FUiInstellingenContext: TUiInstellingenContext; FProductsContext: TProductsContext; FProductDetailContext: TProductVerpakkingenContext; FProductVerpakkingMetaContext: TProductVerpakkingMetaContext; public constructor Create(); + property ConfigsContext: TConfigsContext read FConfigsContext write FConfigsContext; property UserContext: TUserContext read FUserContext write FUserContext; property UiInstellingenContext: TUiInstellingenContext read FUiInstellingenContext write FUiInstellingenContext; property ProductsContext: TProductsContext read FProductsContext write FProductsContext; @@ -360,7 +378,7 @@ end; // Enkel updaten wanneer nog niet op nil stond. -procedure TProductsContext.Reset(Notify: Boolean = True); +procedure TProductsContext.Reset(Notify: boolean = True); begin if (GeselecteerdProduct <> nil) or (FProducten.Count > 0) then begin @@ -418,7 +436,7 @@ self.Change(); end; -procedure TProductVerpakkingenContext.Reset(Notify: Boolean = True); +procedure TProductVerpakkingenContext.Reset(Notify: boolean = True); begin if (FGeselecteerdeVerpakking <> nil) or (FProductVerpakkingen.Count > 0) then begin @@ -504,7 +522,7 @@ FParameters := TList.Create(); end; -function TProductVerpakking.Equals(Obj: TObject): Boolean; +function TProductVerpakking.Equals(Obj: TObject): boolean; begin if Obj = nil then Result := False @@ -606,6 +624,7 @@ // APPLICATION CONTEXT constructor TApplicationContext.Create(); begin + FConfigsContext := TConfigsContext.Create(); FUserContext := TUserContext.Create(); FUiInstellingenContext := TUiInstellingenContext.Create(); FProductsContext := TProductsContext.Create(); Index: VerpakkingsDefinitie/Main.pas =================================================================== diff -u -r593 -r610 --- VerpakkingsDefinitie/Main.pas (.../Main.pas) (revision 593) +++ VerpakkingsDefinitie/Main.pas (.../Main.pas) (revision 610) @@ -6,28 +6,26 @@ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, - ApplicationContext, UserAgent, ProductsAgent, Navigator; + ApplicationContext, UserAgent, ProductsAgent, ConfigAgent, Navigator; type TControlArray = Array of TControl; TFormMain = class(TForm, INavigator) PanelMain: TPanel; PanelGebruiker: TPanel; + PanelTestOmgeving: TPanel; procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private FAppContext: TApplicationContext; + FConfigAgent: TConfigAgent; FUserAgent: TUserAgent; FProductsAgent: TProductsAgent; public procedure NavigeerNaar(schermId: Integer); end; - TCustomControl = Class(TControl) - - End; - var FormMain: TFormMain; @@ -47,9 +45,15 @@ procedure TFormMain.FormCreate(Sender: TObject); begin FAppContext := TApplicationContext.Create(); - FUserAgent := TUserAgent.Create(); - FProductsAgent := TProductsAgent.Create(); + FConfigAgent := TConfigAgent.Create(); + FConfigAgent.LaadConfigWaarden(Application.ExeName, FAppContext.ConfigsContext); + FUserAgent := TUserAgent.Create(FAppContext.ConfigsContext.UserServerUrl); + FProductsAgent := TProductsAgent.Create(FAppContext.ConfigsContext.SelectServerUrl, FAppContext.ConfigsContext.OptiServerUrl); + // Panel voor productiestatus tonen indien nodig + PanelTestOmgeving.Visible := not FAppContext.ConfigsContext.IsProductieOmgeving; + + // Form gebruiker aanmaken bij creatie with TFormGebruiker.Create(PanelGebruiker, Self, FAppContext, FAppContext.UserContext, FUserAgent) do begin Parent := PanelGebruiker; Index: VerpakkingsDefinitie/VerpakkingsDefinitie.dproj =================================================================== diff -u -r607 -r610 --- VerpakkingsDefinitie/VerpakkingsDefinitie.dproj (.../VerpakkingsDefinitie.dproj) (revision 607) +++ VerpakkingsDefinitie/VerpakkingsDefinitie.dproj (.../VerpakkingsDefinitie.dproj) (revision 610) @@ -39,6 +39,12 @@ Base true + + true + Cfg_2 + true + true + bindcompfmx;fmx;rtl;dbrtl;IndySystem;DbxClientDriver;bindcomp;inetdb;DBXInterBaseDriver;xmlrtl;ibxpress;DbxCommonDriver;IndyProtocols;DBXMySQLDriver;dbxcds;FMXTee;bindengine;soaprtl;CustomIPTransport;dsnap;fmxase;IndyCore;CloudService;FmxTeeUI;inet;fmxobj;inetdbxpress;fmxdae;IPIndyImpl;dbexpress;$(DCC_UsePackage) $(BDS)\bin\delphi_PROJECTICON.ico @@ -78,11 +84,25 @@ false + None + CompanyName=Van Hoecke;FileDescription=Aanpassen van verpakkingen per product;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=Verpakkings definitie;ProductVersion=1.0.0.0;Comments=Robin De Bock + 2067 false RELEASE;$(DCC_Define) 0 false + + true + true + VerpakkingsDefinitie_Icon.ico + false + true + true + 2067 + false + CompanyName=Van Hoecke;FileDescription=Aanpassen van verpakkingen per product;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=Verpakkings definitie;ProductVersion=1.0.0.0;Comments=Robin De Bock + MainSource @@ -134,6 +154,7 @@
FormVerpakkingMeta
dfm + Cfg_2 Base Index: VerpakkingsDefinitie/VerpakkingsDefinitie.dpr =================================================================== diff -u -r607 -r610 --- VerpakkingsDefinitie/VerpakkingsDefinitie.dpr (.../VerpakkingsDefinitie.dpr) (revision 607) +++ VerpakkingsDefinitie/VerpakkingsDefinitie.dpr (.../VerpakkingsDefinitie.dpr) (revision 610) @@ -2,35 +2,36 @@ uses Vcl.Forms, - Main in 'Main.pas' {FormMain} , + Main in 'Main.pas' {FormMain}, ApplicationContext in 'ApplicationContext.pas', - LogInScherm in 'UI\LogInScherm.pas' {FormLogin} , + LogInScherm in 'UI\LogInScherm.pas' {FormLogin}, UserAgent in 'WS\UserAgent.pas', Subscherm in 'UI\Subscherm.pas', UserServerService in 'WS\UserServerService.pas', - ZoekProductenScherm in 'UI\ZoekProductenScherm.pas' {FormZoekProducten} , + ZoekProductenScherm in 'UI\ZoekProductenScherm.pas' {FormZoekProducten}, Util in 'UI\Util.pas', - GebruikerScherm in 'UI\GebruikerScherm.pas' {FormGebruiker} , + GebruikerScherm in 'UI\GebruikerScherm.pas' {FormGebruiker}, ObserverPattern in 'UI\ObserverPattern.pas', SelectService in 'WS\SelectService.pas', ProductsAgent in 'WS\ProductsAgent.pas', - GevondenProductenScherm in 'UI\GevondenProductenScherm.pas' {FormGevondenProducten} , + GevondenProductenScherm in 'UI\GevondenProductenScherm.pas' {FormGevondenProducten}, OptiServerService in 'WS\OptiServerService.pas', - ProductDetailScherm in 'UI\ProductDetailScherm.pas' {FormProductDetail} , + ProductDetailScherm in 'UI\ProductDetailScherm.pas' {FormProductDetail}, CheckCombo in 'UI\CheckCombo.pas', UI_Data in 'WS\UI_Data.pas', CustomPanelVerpakkingParameter in 'UI\CustomPanelVerpakkingParameter.pas', - NavProductScherm in 'UI\NavProductScherm.pas' {FormProductNav} , + NavProductScherm in 'UI\NavProductScherm.pas' {FormProductNav}, Navigator in 'UI\Navigator.pas', - VerpakkingDetailScherm in 'UI\VerpakkingDetailScherm.pas' {FormVerpakkingDetail} , + VerpakkingDetailScherm in 'UI\VerpakkingDetailScherm.pas' {FormVerpakkingDetail}, ReadOnlyList in 'Other\ReadOnlyList.pas', - ProductMetaScherm in 'UI\ProductMetaScherm.pas' {FormVerpakkingMeta}; + ProductMetaScherm in 'UI\ProductMetaScherm.pas' {FormVerpakkingMeta}, + ConfigAgent in 'Other\ConfigAgent.pas'; {$R *.res} begin Application.Initialize; - Application.Title := 'PlanScan'; + Application.Title := 'Verpakkings definitie'; Application.MainFormOnTaskbar := True; Application.CreateForm(TFormMain, FormMain); Application.Run; Index: VerpakkingsDefinitie/WS/UserAgent.pas =================================================================== diff -u -r556 -r610 --- VerpakkingsDefinitie/WS/UserAgent.pas (.../UserAgent.pas) (revision 556) +++ VerpakkingsDefinitie/WS/UserAgent.pas (.../UserAgent.pas) (revision 610) @@ -8,7 +8,6 @@ // Resource strings are stored as resources and linked into the executable or // library so that they can be modified without recompiling the program. resourcestring - USER_SERVER_URL = 'http://cacheaccept2010:57772/csp/dev1/WS.Sys.Toegang.UserServer.cls'; APPLICATION_NAME = 'vhintra'; DOMAIN_NAME = '1'; @@ -21,20 +20,21 @@ procedure RegistreerLogout(UserContext: TUserContext); procedure RegistreerMislukteLogout(UserContext: TUserContext; pxStatusObj: pxStatus); public - Constructor Create(); + Constructor Create(ServerUrl: string); procedure GebruikerAanmelden(GebruikersNaam: string; Wachtwoord: string; UserContext: TUserContext); procedure GebruikerAfmelden(UserContext: TUserContext); end; implementation -constructor TUserAgent.Create(); +constructor TUserAgent.Create(ServerUrl: string); begin - FUserServerSoap := UserServerService.GetUserServerSoap(false, USER_SERVER_URL, nil); + inherited Create(); + + FUserServerSoap := UserServerService.GetUserServerSoap(false, ServerUrl, nil); end; -procedure TUserAgent.GebruikerAanmelden(GebruikersNaam: string; Wachtwoord: string; - UserContext: TUserContext); +procedure TUserAgent.GebruikerAanmelden(GebruikersNaam: string; Wachtwoord: string; UserContext: TUserContext); var LogInData: UserServerService.LogIn; LogInResponseObj: UserServerService.LogInResponse; Index: VerpakkingsDefinitie/Other/ConfigAgent.pas =================================================================== diff -u --- VerpakkingsDefinitie/Other/ConfigAgent.pas (revision 0) +++ VerpakkingsDefinitie/Other/ConfigAgent.pas (revision 610) @@ -0,0 +1,84 @@ +unit ConfigAgent; + +interface + +uses + System.IniFiles, SysUtils, + ApplicationContext; + +const + SELECT_SERVER_URL_PRODUCTIE = 'http://cache01/csp/admin1/WS.Prod.Select.CLS'; + OPTI_SERVER_URL_PRODUCTIE = 'http://cache01/csp/admin1/WS.Prod.OptiBox.OptiServer.CLS'; + USER_SERVER_URL_PRODUCTIE = 'http://cache01/csp/admin1/WS.Sys.Toegang.UserServer.cls'; + SELECT_SERVER_URL_TEST = 'http://cacheaccept2010:57772/csp/dev1/WS.Prod.Select.CLS'; + OPTI_SERVER_URL_TEST = 'http://cacheaccept2010:57772/csp/dev1/WS.Prod.OptiBox.OptiServer.CLS'; + USER_SERVER_URL_TEST = 'http://cacheaccept2010:57772/csp/dev1/WS.Sys.Toegang.UserServer.cls'; + +type + TConfigAgent = class + private + function HaalWaardeOp(Ini: TMemIniFile; Section: string; Identificatie: string; DefaultWaarde: string): string; overload; + function HaalWaardeOp(Ini: TMemIniFile; Section: string; Identificatie: string; DefaultWaarde: boolean): boolean; overload; + public + procedure LaadConfigWaarden(ExeName: string; ConfigsContext: TConfigsContext); + end; + +implementation + +// https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_TIniFile_and_TMemIniFile +procedure TConfigAgent.LaadConfigWaarden(ExeName: string; ConfigsContext: TConfigsContext); +var + Ini: TMemIniFile; // In memory, sneller maar kans op data loss. Bij ons is dit geen ramp. +begin + Ini := TMemIniFile.Create(ChangeFileExt(ExeName, '.INI')); + try + // Controleer of alle configs aanwezig zijn. + ConfigsContext.IsProductieOmgeving := HaalWaardeOp(Ini, 'ProductieStatus', 'IsProductieOmgeving', true); + // Productie + ConfigsContext.SelectServerUrl := HaalWaardeOp(Ini, 'Servers', 'Select', SELECT_SERVER_URL_PRODUCTIE); + ConfigsContext.OptiServerUrl := HaalWaardeOp(Ini, 'Servers', 'Opti', OPTI_SERVER_URL_PRODUCTIE); + ConfigsContext.UserServerUrl := HaalWaardeOp(Ini, 'Servers', 'User', USER_SERVER_URL_PRODUCTIE); + + // Test omgeving + if ConfigsContext.IsProductieOmgeving then + begin + // Niet in test omgeving, maar velden wel genereren in config bestand + HaalWaardeOp(Ini, 'Servers_TEST', 'Select', SELECT_SERVER_URL_TEST); + HaalWaardeOp(Ini, 'Servers_TEST', 'Opti', OPTI_SERVER_URL_TEST); + HaalWaardeOp(Ini, 'Servers_TEST', 'User', USER_SERVER_URL_TEST); + end + else + begin + // Overschrijven met test omgeving waarden + ConfigsContext.SelectServerUrl := HaalWaardeOp(Ini, 'Servers_TEST', 'Select', SELECT_SERVER_URL_TEST); + ConfigsContext.OptiServerUrl := HaalWaardeOp(Ini, 'Servers_TEST', 'Opti', OPTI_SERVER_URL_TEST); + ConfigsContext.UserServerUrl := HaalWaardeOp(Ini, 'Servers_TEST', 'User', USER_SERVER_URL_TEST); + end; + + Ini.UpdateFile; // Voer wijzigingen door + finally + Ini.Free; + end; +end; + +function TConfigAgent.HaalWaardeOp(Ini: TMemIniFile; Section: string; Identificatie: string; DefaultWaarde: boolean): boolean; +begin + if not Ini.ValueExists(Section, Identificatie) then + // Ontbreekt, aanmaken + Ini.WriteBool(Section, Identificatie, DefaultWaarde); + + // Uitlezen uit config + Result := Ini.ReadBool(Section, Identificatie, DefaultWaarde); +end; + +function TConfigAgent.HaalWaardeOp(Ini: TMemIniFile; Section: string; Identificatie: string; DefaultWaarde: string): string; +begin + if not Ini.ValueExists(Section, Identificatie) then + // Ontbreekt, aanmaken + Ini.writestring(Section, Identificatie, DefaultWaarde); + + // Uitlezen uit config + Result := Ini.readstring(Section, Identificatie, DefaultWaarde); +end; + +end.