Untitled diff

Created Diff never expires
34 Entfernungen
Zeilen
Gesamt
Entfernt
Wörter
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisieren Sie auf
Diffchecker logo
Diffchecker Pro
39 Zeilen
43 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Wörter
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisieren Sie auf
Diffchecker logo
Diffchecker Pro
50 Zeilen
function TTextTestImporter.ParseHeader(Lines: TStrings): Boolean;
function TTextTestImporter.ParseHeader(Lines: TStrings): Boolean;
var
var
i, Pos1, Pos2, Pos3, Pos4, Age: Integer;
PatientFound, DateFound: Boolean;
Line, PatientName: String;
Line, PatientName, AgeStr, BirthDateStr, DateStr: String;
PatientRegex, DateRegex: TRegExpr;
i: Integer;
begin
begin
PatientRegex := TRegExpr.Create;
PatientRegex.Expression := 'Paciente\s+:*(.*)\s{2,}Idade:+(\d+)\s*anos\s*Nascimento:*(.+)';
PatientRegex.ModifierI := True;
PatientRegex.ModifierG := True;

DateRegex := TRegExpr.Create;
DateRegex.Expression := 'Data\s*de\s*Cadastro\.*\s*:*(.+)';
DateRegex.ModifierI := True;
DateRegex.ModifierG := True;

Result := False;
Result := False;
for i := 0 to Lines.Count -1 do
PatientFound := False;
DateFound := False;
for i := 0 to Lines.Count - 1 do
begin
begin
if Result then
if (DateFound and PatientFound) or (i > 20) then
Exit;
break;
Line := UpperCase(Trim(Lines[i]));
Line := Trim(Lines[i]);
if AnsiStartsStr('PACIENTE', Line) then
if not PatientFound and PatientRegex.Exec(Line) then
begin
begin
Pos1 := PosEx(':', Line, Length('PACIENTE') + 1);
PatientFound := True;
if Pos1 > 0 then
PatientName := Trim(PatientRegex.Match[1]);
begin
AgeStr := Trim(PatientRegex.Match[2]);
Pos2 := RPos('IDADE', Line);
BirthDateStr := Trim(PatientRegex.Match[3]);
if Pos2 > 0 then
FData.Strings['name'] := PatientName;
begin
FData.Integers['age'] := StrToIntDef(AgeStr, 0);
PatientName := Trim(Copy(Line, Pos1 + 1, Pos2 - Pos1 - 1));
FData.Floats['birthdate'] := ScanDateTime('dd/mm/yy', BirthDateStr);
if PatientName <> '' then
continue;
begin
end;
Result := True;

FData.Strings['name'] := PatientName;
if not DateFound and DateRegex.Exec(Line) then
Pos3 := PosEx(':', Line, Pos2);
begin
if Pos3 <> 0 then
DateFound := True;
begin
DateStr := Trim(DateRegex.Match[1]);
Pos4 := PosEx('ANOS', Line, Pos3);
FData.Floats['date'] := ScanDateTime('dd/mm/yyyy', DateStr);
if TryStrToInt(Trim(Copy(Line, Pos3 + 1, Pos4 - Pos3 - 1)), Age) then
FData.Integers['age'] := Age;
end;
end;
end;
end;
end;
end;
end;
end;
Result := DateFound and PatientFound
and (FData.Get('name', '') <> '')
and (FData.Get('age', 0) <> 0)
and (FData.Get('birthdate', 0.0) <> 0)
and (FData.Get('date', 0.0) <> 0);
end;
end;