Nimm statt der for-Schleife die while-Schleife. Damit ersparst du dir das auslesen der Anzahl der Zeilen. Und es erhöht die Lesbarkeit des Textes, weil du dir wieder eine Variable sparst.
Statt
Delphi-Quellcode:
posRang:=pos('<',astr); // Kannst du dir auch sparen, da unabhängig von der Zeile
//immer das Gleiche rauskommt
Rang:=copy(astr,posRang+23,3);
Ist sowas schneller zu verstehen;
Delphi-Quellcode:
posRang:=pos('[B]',astr);
Rang:=copy(astr,posRang+3,3);
Insgesamt aber nicht sehr schön, wie du da das b benutzt. Mach eher was in die Richtung
Delphi-Quellcode:
while not EOF(dat)
.
.
inc(i);
if pos('Rang',astr) <> 0 then // in der i.ten Zeile wurde was gefunden.
begin
Readln(dat,astr);
posRang:=pos('[B]',astr);
Rang:=copy(astr,posRang+3,3);
break;
end;
.
.
Ich finde, dass das eine schönere Lösung ist, die auch jemand ausser dem Programmierer gut lesen kann.
sonst:
Du bekommst Fehler wenn der Rang mal mehr oder weniger als 3 Zeichen hat. Könnte vor allem bei den Punkten Probleme geben.
Erwarte das Beste und bereite dich auf das Schlimmste vor.