Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variablen-System (https://www.delphipraxis.net/4777-variablen-system.html)

theomega 11. Mai 2003 19:03


Variablen-System
 
Hallo Leute
ich brauche für eine Anwendung je nach Parameter unterschiedlich viele Variablen mit unterschiedlichen Namen. Außerdem muß ich auf die Variablen per Namen zugreifen können ('variable'+inttostr(i)'). Dazu habe ich jetzt diese Funktionen hier geschrieben:

Delphi-Quellcode:
UNIT vars;

INTERFACE
type TVar=record
titel,value:string;
end;
var variables:array of TVar;

procedure setvar(name,value:string);
function getvar(name:string):string;
function isset(name:string):boolean;

IMPLEMENTATION


function isset(name:string):boolean;
var i:integer;
begin;
result := false;
for i:= low(variables) to high(variables) do begin;
        if variables[i].titel = name then result := true;
end;
end;


procedure setvar(name,value:string);
var i:integer;
begin;
if name='' then begin;
        //Ausgaben nicht speichern
        header;
        writeln(value);
end
else begin;
//Speichern
if isset(name) then begin;
       for i:= low(variables) to high(variables) do begin;
         if variables[i].titel = name then variables[i].value := value;
       end;
end
else begin;
        setlength(variables,length(variables)+1);
        variables[high(variables)].titel := name;
        variables[high(variables)].value := value;
end;
end;
end;

function getvar(name:string):string;
var i:integer;
begin;
result := '';
for i:= low(variables) to high(variables) do begin;
        if variables[i].titel = name then result := variables[i].value;
end;
end;
So weit so gut, man kann jetzt mit
Code:
setvar('Namen','Wert');
einen Wert setzten, außerdem dem Wert mit
Code:
var s:string;
begin;
s:=getvar('Namen');
wieder herholen.

Das geht auch problemlos nur ist die Sache recht langsam. Ich muß recht oft auf die Variablen zugreifen und jedes mal muß er das ganze Array nach der Variable absuchen.

Wer hat (wenn auch nur in der Theroie) eine bessere Idee, die ungefähr den gleichen Effekt hat. Ich brauche hier jetzt keine Code-Beispiele sondern einfach Ideen.

Danke
TO

Chewie 11. Mai 2003 22:06

Ein Grund, dass es so langsam ist, ist der, dass jedesmal das Arrray komplett durchsucht wird. Eine Lösung wäre, ein Hash (=assoziatives Array) zu benutzen. Komponenten gibts bei Torry.
Dann würde der zeitaufwändigste Part, nämlich das Durchsuchen des Arrays, wegfallen. Du müsstest einfach den Namen der Variabblen als Array-Index verwenden.


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-2025 by Thomas Breitkreuz