//Diese Funktion gibt mir einen String zwischen einem Text zurück: aus RNID=1234& wird 1234
function getElementValue(
const source, startStr, endStr:
String; offset:integer):
string;
var
startIndex, endIndex: integer;
begin
startIndex := PosEx(startStr, source, offset);
offset := startIndex + 1;
if (startIndex > 0)
then
begin
startIndex := startIndex + Length(startStr);
endIndex := PosEx(endStr, source, startIndex) + Length(endStr);
Result := MidStr(source, startIndex, endIndex - startIndex-1);
end
else
Result := '
';
end;
//Die Prozedur soll das matching der IDs durchführen
procedure TFmain.Button9Click(Sender: TObject);
var
i,y, p, startpos: Integer;
s, rnid:
string;
begin
ListBox1.Clear;
//Ergebnis Listbox leeren
for i := 0
to RichEdit1.Lines.Count - 1
do //im Richedit befindet sich der gesamte HTML-Code mit den 300 Tablerows
begin
if Pos('
RNID=', RichEdit1.Lines.Strings[i]) > 0
then
begin
s := '
';
{Die aktuelle Zeile wird nach der Zeichenfolge "RNID=" durchsucht
und bei Erfolg ab der gefundenen Position ausgelesen, bis das schließende
Tag </tr> auftritt...}
for p := Pos('
RNID=', RichEdit1.Lines.Strings[i])
to
Length(RichEdit1.Lines.Strings[i])
do
if RichEdit1.Lines.Strings[i][p] <> '
</tr>'
then
s := s + RichEdit1.Lines.Strings[i][p]
else
break;
//Die Zeile wurde identifiziert, nun prüfen ob die SUCH-ID darin vorkommt
rnid := getElementValue(s,'
RNID=','
&',1);
//RNID aus der Zeile herauslösen
for y := 0
to listbox_jira.Count-1
do //alle ID Einträge aus der Listbox nacheinander abarbeiten
begin
startpos := Pos (listbox_jira.Items[y], s);
if (startpos > 0)
then
begin
//Match in die Liste eintragen
Listbox1.Items.Add('
JIRA: '+listbox_jira.Items[y]+'
entspricht IR: '+rnid);
end
else
begin
//nix eintragen
end;
end;
end;
end;
// Die Zahl der gefundenen EInträge in Label1 anzeigen...
if ListBox1.Items.Count > 0
then
label1.Caption := IntToStr(ListBox1.Items.Count) +
'
Einträge verglichen'
else
label1.Caption := '
Keine IRs gefunden.';
end;