Registriert seit: 17. Nov 2005
Ort: Hamburg
1.063 Beiträge
Delphi XE2 Professional
|
AW: Bedingungen für IF-Abfragen aus einem String entnehmen
14. Jul 2012, 19:23
Hallo zusammen,
ich habe eine ListView mit mehreren Spalten. Diese Spalten enthalten unterschiedliche Daten. Diese Daten muss ich in eine andere ListView übertragen. Die Daten können immer variieren. Ich möchte in einem Assistenten zum Beispiel folgendes für Spalte 2 vorgeben können :
Zitat:
F=0;M=1
Wenn das Programm jetzt die Spalte 2 in die andere Listview überträgt, dann soll in jeder Zeile von der ersten ListView wo ein F steht in die Zeile in der zweiten Listview eine 0 eingetragen werden. Das gleiche natürlich auch für M. Die Vorgabe kann ebenfalls variieren, so dass mal 1 oder 3 oder 5 Bedingungen angegeben sind. Die Syntax für die Bedingung soll hier nur ein Beispiel sein, damit ich es besser erklären kann.
Meine Frage ist nun, wie realisiere ich so einen Vorgang, wo unterschiedliche viele IF-Abfragen durchgeführt werden können ?
Auf die Schnelle und ohne größerere Prüfung auf Fehler (nicht getestet)
Delphi-Quellcode:
type
TConst=Record
Name:string;
value:integer;
End;
TConsts=array of TConst;
var
Consts:TConsts;
PROCEDURE GetConsts(const s:string);
var p,i,j,len:integer; name:string; value:integer;
begin
Consts:=Nil;
len:=Length(s);
p:=1;
repeat
i:=p;
while (i<len) and (s[i]<>'=') do inc(i);
if i>=len then exit;
j:=i;
while (j<len) and (s[j]<>';') do inc(j);
// Jetzt zeigen:
// p auf den Namen (F oder M etc)
// i auf das "="
// j auf das ';' oder hinter das Ende des Strings
SetLength(Consts,Length(Consts)+1);
with Consts[High(Consts)] do begin
Name:=Trim(Copy(s,p,i-p));
Value:=StrToInt(Trim(Copy(s,i+1,j-i-1)));
end;
p:=j+1;
until p>len;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
|
|
Zitat
|