Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Bedingungen für IF-Abfragen aus einem String entnehmen

  Alt 14. Jul 2012, 18: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....
  Mit Zitat antworten Zitat