Доопросить сервер

  • Автор темы Автор темы Shouldercannon
  • Дата начала Дата начала
S

Shouldercannon

Пришедший ответ помещаю в переменную типа string. Далее выполняю проверку на наличие \final\\queryid\ в пришедшем ответе
Код:
if not (Copy(qqq, Pos('\final\\queryid\', qqq), 16) = '\final\\queryid\') then // опросить повторно и опрашивать до тех пор пока в конце не будет \final\\queryid\
Как провести цикл проверки?
 
Пришедший ответ помещаю в переменную типа string. Далее выполняю проверку на наличие \final\\queryid\ в пришедшем ответе
Код:
if not (Copy(qqq, Pos('\final\\queryid\', qqq), 16) = '\final\\queryid\') then // опросить повторно и опрашивать до тех пор пока в конце не будет \final\\queryid\
Как провести цикл проверки?

Не вижу проблем...
За исключением:
1. Ответ сервера может не содержать '\final\\queryid\' НИКОГДА...
2. Сервер может не ответить вообще... ну допустим... если обиделся... :rolleyes:

я бы сделал так:
Код:
// функция опрашивающая сервер
function RequestToServer(out qPath: string): Boolean;
var
ans: string;
begin
Result := False;
qPath := '';
// ... спрашиваем у сервера. Если ответил - Result := True;

if Result then
qPath := ans;
end;
в коде программы
Код:
procedure TFormClient.Button2Click(Sender: TObject);
var
ResponseOK: Boolean;
AttemptsCount: Integer;
qqq: string;
Found : Boolean;
begin
Found := False;
AttemptsCount := 1000; // количество попыток спросить у сервера

ResponseOK := RequestToServer(qqq);
if ResponseOK then
Found := (Copy(qqq, Pos('\final\\queryid\', qqq), 16) = '\final\\queryid\');

while ResponseOK and not Found do
begin
Dec(AttemptsCount);
Application.ProcessMessages;
Sleep(100); // чуток подождали
ResponseOK := (AttemptsCount > 0) and RequestToServer(qqq);
if ResponseOK then
Found := (Copy(qqq, Pos('\final\\queryid\', qqq), 16) = '\final\\queryid\');
end;

if Found then
ShowMessage('Дожались!')
else
ShowMessage('Не дожались!')

end;
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab