Весь косяк, думаю, в постоянной релокации массивов. Это очень долго. Ну и чтение по строчкам (22 тысячи отдельных обращений к диску вместо пары-тройки) тоже вносят свою лепту.
Вот так
Код:
st := TStringList.Create();
st.LoadFromFile('123.txt');
GetMem(tar1, st.Count * sizeof(integer));
GetMem(tar2, st.Count * sizeof(integer));
for i := 0 to st.Count-1 do
begin
s := st.Strings[i];
j := Pos(' ', s);
k := length(s);
while s[k] <> ' ' do
dec(k);
tar1[i] := StrToInt(copy(s, 1, j - 1));
tar2[i] := StrToInt(copy(s, k + 1, length(s) - k));
end;
Writeln('Fin!');
Readln;
Чуть быстрее, чем моментально (тестил на 200 тыс строк, строки скопированы из твоего первого поста и размножены).
ЗЫЖ не обращай внимания на getmem, это еще с древних времен. PascalSchool так сказать. Юзай SetLength.