ты лучше бы придерживался стандартов, нестандартные файлы усложняют и замедляют парсинг
var
strings: TStringList;
i: integer;
str: string;
begin
strings := TStringList.Create;
strings.LoadFromFile('filename.txt', TEncoding.UTF8);
for i := 0 to strings.Count - 1 do
begin
str := strings[i];
while str.Chars[0] = '<' do
delete(str, 1, pos('>', str));
delete(str, pos('<', str), length(str));
strings[i] := str + '
';
end;
Memo1.Lines.Assign(strings);
strings.SaveToFile('filename.txt');
FreeAndNil(strings);
end;
Вячеслав ВласовГуру (3372)
1 год назад
>я просто не врубился куда тебе нужно вернуть.
Да, уточню: смысл в том, чтобы считать строку из Memo1, вручную изменить ее там, а потом сохранить ее в файл на место между тегами. Грубо говоря:
<pxr2=FF6A><psy=FFED><pal=FF><opt=0>[Считать отсюда]<br>
<pxr2=FF6A><psy=FFED><pal=FF><opt=0>[Вернуть из Memo1 сюда же]<br>.
Хотя, Memo1 - это пока условный черновик. В дальнейшем я думаю использовать ListView для этого, куда будет записываться не только строка, но и номер строки в файле, откуда она была считана, чтобы сохранить ее в файл точно туда.
<pxr2=FF6A><psy=FFED><pal=FF><opt=0>НУЖНАЯ СТРОКА<br>
<ini><x0e=12><pxr2=FF2E><psy=FFB5><pal=1>НУЖНАЯ СТРОКА<br>
<pxc=0><psy=5A><pal=1><btn=16>НУЖНАЯ СТРОКА<br>
<pxr2=FF1F><psy=FFD3><pal=0>НУЖНАЯ СТРОКА<pal=1><br>
<ini><pxc=0><psy=FFF6><pal=2>НУЖНАЯ СТРОКА<br>
<pxr2=FF6A><psy=12><pal=FF><opt=0>НУЖНАЯ СТРОКА<br>
<ini><boxa=4><pal=1>НУЖНАЯ СТРОКА<x11=1><end>
А также многострочный вариант:
-----------------------
<ini><x0e=12><pxr2=FF2E><psy=FFB5><pal=1>НУЖНАЯ СТРОКА1<br>
НУЖНАЯ СТРОКА2<br>
НУЖНАЯ СТРОКА3<br>
<br>
НУЖНАЯ СТРОКА4<br>
НУЖНАЯ СТРОКА5<br>
НУЖНАЯ СТРОКА6<br>
<x11=1><end>
------------------------
Нужно прочитать строку, найдя ее по тегу, независимо от его значения, и добавить в Memo.
Многострочные строки (через br) нужно объединить в одну строку, сохранив br-теги внутри нее. После вернуть строки из Memo обратно в файл на свои места, не затронув теги.
Значения тегов (на всякий случай):
pxc - целое число (обычно просто 0)
pxr2 - шестнадцатеричные числа (до 4)
psy - шестнадцатеричные числа (до 4)
pal - шестнадцатеричные числа (до 2)
x0e - шестнадцатеричные числа
btn - целые числа
opt - целые числа
boxa - целые числа
x11 - цифры в теге не меняются, целые числа, содержит значение "1" по всему файлу.
ini - не меняется, не содержит значений
end - не меняется, не содержит значений
br - перенос строки.