Программа получает содержимое интернет страницы (ответ от сервера) и сохраняет это в файл.
Далее нужно произвести парсинг (что я и делаю) и удалить из строки все пробелы.
Преобразовать число, например из 10 000 в 10000.
По непонятной причине это не выходит. Как это сделать?
//Запись в файл
procedure get_https_file_content_to_file(https_url:string);
var
IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
server_response:ansistring;
text_file: textfile;
begin
IdHTTP1.HandleRedirects:=true;
IdHTTP1.RedirectMaximum:=15;
IdHTTP1:=TIdHTTP.Create(nil);
IdSSLIOHandlerSocket1:=TIdSSLIOHandlerSocket.Create(IdHTTP1);
IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1;
IdHTTP1.IOHandler:=IdSSLIOHandlerSocket1;
server_response:=utf8toansi(IdHTTP1.Get(https_url)); //Мы получили в utf8, переводим это в Ansi
//Нам нужен файл в кодировке Ansi т.к. часть функций работают с этой кодировкой
assignfile(text_file, ExtractFilePath(Application.ExeName)+'data\pharsed_data.txt');
rewrite(text_file);
write(text_file, server_response);
Closefile(text_file);
end;
//Далее вызов функции и запись данных в файл. Файл в кодировке ansi (открывал notepad++)
//Теперь мне нужно осуществить парсинг
//Часть кода
//string_from_file:ansistring; damage:ansistring;
file_path:=ExtractFilePath(Application.ExeName)+'data\pharsed_data.txt';
AssignFile(text_file,file_path);
Reset(text_file);
while not EOF(text_file) do
begin
readln(text_file, string_from_file);
//Функция поиска - мы успешно нашли этот текст
if CountPos('Урон', string_from_file)>0 then
begin
damage:=get_stext('Урон', 'Конец_урона', string_from_file); //Успешно получили текст между словами Урон Конец_урона
main_form.Memo1.Lines.Add(damage); //В поле мемо видим текст 10 000
//ТУТ НАДО УДАЛИТЬ ИЗ СТРОКИ damage все пробелы т.е. хочу получить 10000
//damage:=StringReplace(damage, ' ', '', [rfReplaceAll]);
damage:=AnsiReplaceStr(damage, ' ', '');
//damage:=StringReplace(damage,' ','',[rfReplaceAll, rfIgnoreCase]);
//damage:=AnsiReplaceStr(damage,' ','',[rfReplaceAll, rfIgnoreCase]);
main_form.Memo1.Lines.Add(damage); //В поле мемо снова 10 000 Странно...
//А ЕСЛИ ТАК
damage:=' 10 000';
damage:=AnsiReplaceStr(damage, ' ', '');
main_form.Memo1.Lines.Add(damage); //В поле мемо 10000 - работает
//Почему не сработало с чтением из файла?
end;
end;
CloseFile(text_file);