Bei Trim(Eventlst.Values['Event']); nimmt dieser nur das 1. Event auf, nicht das 2. oder evtl 3. oder 4. Gibt es eine Möglichkeit an die auch zu kommen?
Dann musst du die StringList manuell mit jeweils nur einem Block füllen und danach wieder leer machen. Z.B. so:
Delphi-Quellcode:
procedure HandleData(Source: TStrings);
var
CallerID: string;
EventName: string;
begin
if Source.Count = 0 then Exit;
EventName := Trim(Source.Values['Event']);
CallerID := Trim(Source.Values['CallerIDNum']);
end;
procedure HandleFile(const AFileName: string);
var
line: string;
lst: TStringList;
reader: TStreamReader;
begin
reader := TStreamReader.Create(AFileName);
try
lst := TStringList.Create;
try
lst.NameValueSeparator := ':';
while not reader.EndOfStream do begin
line := reader.ReadLine;
if Trim(line) = '' then begin
HandleData(lst);
lst.Clear;
end
else begin
lst.Add(line);
end;
end;
{ falls als letztes keine Leerzeile mehr kam }
HandleData(lst);
finally
lst.Free;
end;
finally
reader.Free;
end;
end;