Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Rechnen mit Werten aus der DB

  Alt 16. Okt 2007, 14:02
Hi Jack,

für den Umgang mit den ADO-Komponenten findest du reichlich Code im Forum und der Online-Hilfe. Deine Benutzerschnittstelle ist auch nicht so klar beschrieben, als dass ich dir Code für die Übernahme von Access-Daten in deine Controls zeigen könnte.

Das Rechnen ist eigentlich recht einfach: Deine Daten musst du am Delimiter (Komma) zerlegen, das geht recht einfach mit einer TStringList und deren property CommaText. Für das Rechnen studiere mal den folgenden Code:

Delphi-Quellcode:
uses
  RTLConsts;

type
  TCountedStringList = class(TStringList)
  private
   function GetString(Index: Integer): string;
  public
    procedure AddString(const s: string);
  end;

procedure TCountedStringList.AddString(const s: string);
var
  index, i, n: Integer;
  sDim: string;
begin
  n := 0;
  for i := 1 to Length(s) do
    if s[i] in ['0'..'9'] then
      n := n * 10 + Ord(s[i]) - Ord('0') else
    begin
      sDim := Copy(s, i, MaxInt);
      if Find(sDim, index)
        then Objects[index] := TObject(Integer(Objects[index]) + n)
        else Objects[Add(sDim)] := TObject(n);
      Break;
    end;
end;

function TCountedStringList.GetString(index: Integer): string;
begin
  if (Index < 0) or (Index >= Count) then Error(@SListIndexError, Index);
  Result := Format('%d%s', [Integer(Objects[index]), Strings[index]]);
end;
3ABCDE ist nichts anderes als eine Kombination einer Zahl mit einem String - wie 500KG oder 2STD und 10MIN. Du kannst die einzelnen Strings mit AddString('3ABCDE') einer CountedStringList hinzufügen und mit GetString() und Count die Ergebnisse iterativ abholen.

Grüße vom marabu
  Mit Zitat antworten Zitat