Ich habe eine Schleife über ein Array mit Feldnamen:
Delphi-Quellcode:
var
fields: array[0..6] of string = ('name', 'desc', 'key', 'foo', 'bar', 'lolli', 'pop');
procedure TForm5.Button1Click(Sender: TObject);
var
i: Integer;
s: string;
begin
Memo1.Lines.Clear;
for i := 0 to high(fields) do
begin
s := setDefaultvalue('name', 'Name');
// ...;
// ...;
s := fields[i] + #9 + ': ' + 'Standardwert';
Memo1.Lines.Add(s);
end;
end;
In dieser Schleife wird jedem Feldnamen ein Standardwert zugeordnet*. Jetzt gibt es aber Felder, denen sollen spezifische Werte zu geordnet werden. Zum Beispiel soll das Feld
name nicht den Standardwert erhalten, sondern einen von mir vorgegebenen. Es soll auch möglich sein mehrere beliebige Felder mit von mir vorgegebenen Werten zu belegen, also auch zum Beispiel den Feldern
name,
key und
pop. Alle anderen Felder sollen aber den Standardwert erhalten.
Bisherige Ausgabe:
Code:
name : Standardwert
desc : Standardwert
key : Standardwert
foo : Standardwert
bar : Standardwert
lolli : Standardwert
pop : Standardwert
Gewünschte Ausgabe:
Code:
name : name
desc : Standardwert
key : Hubba
foo : Standardwert
bar : Standardwert
lolli : Standardwert
pop : Bubba
Damit das ganze einfach gehandhabt werden kann, soll es eine Funktion geben, der ich das betreffende Feld und den gewünschten Wert übergebe. So dass ich einfach und schnell einem Feld einen Wert zu weisen kann:
Delphi-Quellcode:
function setDefaultValue(const field, value: string): string;
var
i: Integer;
begin
Result := '';
for i := 0 to high(fields) do
begin
if fields[i] = field then
begin
Result := field + #9 + ': ' + value;
end
end;
end;
Mein Problem ist jetzt, dass ich bisher noch keine funktionierende Lösung gefunden habe. Und ich habe mir darüber schon Stunden den Kopf zerbrochen. Deswegen hoffe ich, dass hier jemanden eine Lösung einfällt.
Zum Nachbauen braucht ihr nur ein Memo und eine Schaltfläche auf der Form.
*) Dies ist nur ein vereinfachtes Beispiel. In Wirklichkeit muss ich dies in PHP umsetzen und das ganze ist auch noch etwas komplexer. Aber es geht um die Logik und ich habe es auf das Wesentliche runtergebrochen.
PS: Wem ein besserer Threadtitel einfällt, kann diesen gerne nennen.