Answer the question
In order to leave comments, you need to log in
How to remove spaces from a string?
The program receives the content of the web page (response from the server) and saves it to a file.
Next, you need to parse (which I do) and remove all spaces from the string.
Convert a number, for example from 10,000 to 10,000.
For some unknown reason, this does not work. How to do it?
//Запись в файл
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);
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question