Einzelnen Beitrag anzeigen

marabu

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

Re: Bit Operations (Bit in HEX)

  Alt 25. Apr 2006, 11:42
Ich habe mir deinen Quelltext mal angesehen. Speziell hat mich interessiert, warum du mit meiner Routine CheckLines nicht zurecht kommst. Das liegt daran, dass du die Routine nicht korrekt an deine Bedürfnisse angepasst hattest. Deine Schleifensteuerung ist auch jetzt nicht auf die Verwendung meines Codes abgestimmt. CheckLines verarbeitet alle Zeilen in einem Rutsch. Willst du eine zeilenweise Verarbeitung, dann musst du den Code umbauen. Ich habe dir die Routine mal als FSM an die Testdatei angepasst:

Delphi-Quellcode:
function CheckLines(lines: TSTrings): Cardinal;
type
  TState = (stUndefined, stHeader1, stHeader2, stData);
var
  i, j: Integer;
  s: TStrings;
  state: TState;
begin
  state := stUndefined;
  Result := 0;
  s := TStringList.Create;
  for i := 0 to Pred(lines.Count) do
  begin
    case state of
      stUndefined:
        if AnsiStartsText('DGIndex', lines[i]) then
          Inc(state);
      stHeader1,
      stHeader2:
        if lines[i] = 'then
          Inc(state);
      stData:
        if lines[i] = 'then
          state := stUndefined else
        begin
          s.DelimitedText := lines[i];
          for j := 6 to Pred(s.Count) do
            Result := Result + Ord(TestBit(HexToInt(s[j]), strtoint(form1.Edit15.text)))
        end;
    end;
  end;
  s.Free;
end;
marabu
  Mit Zitat antworten Zitat