2013-08-25 2 views
2

Im пытается проверить серийный номер, введенный пользователем на стороне сервера с помощью webservice ,,, когда пользователь вводит серийный ключ и нажимает на следующую кнопку, серийный номер должен быть проверен .. я использовал код ниже для этого .... имя моего метода, который проверяет серийный номер, является ValidateKey() .... и im передает статическое значение 123456 для этого метода, и служба вернет false для этого значения ,,,,, но моя установка идти дальше и им получать предупреждения MessageBox на последнем этапе моей установкиСерийный номер установки INNO с подтверждением сбоя?

function ValidateSerialNumber: Boolean; 
var 
    WinHttpReq: Variant; 
begin 
    WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); 
    WinHttpReq.Open('POST', 'http://localhost:1024/WebService1/Service.asmx?op=ValidateMe', False); 
    WinHttpReq.Send('123456'); 

    if WinHttpReq.Status <> 200 then 
    begin 
    Result := False; 
    end 
    else 
    begin 
    Result := True; 
    end; 
end; 

function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    Result := True; 

    if CurPageID = SerialPage.ID then 
    begin 
    Result := ValidateSerialNumber; 
    end; 
end; 

здесь я хочу установку, чтобы остановить, когда пользователь нажимает на кнопку далее, если служба возвращает ложь, если служба возвращает истину, то он может идти дальше с установкой, где я иду не так?

ответ

1

Вам необходимо подтвердить этот серийный номер от метода события NextButtonClick. Чтобы остаться на вашей странице, если проверка не выполнена, присвойте значение False переменной Result. Если вы хотите, чтобы мастер продолжал, назначьте True методу Result этого метода. Что-то вроде этого:

function ValidateSerialNumber(const SerialNumber: string): Boolean; 
var 
    WinHttpReq: Variant; 
begin 
    Result := False; 

    WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); 
    WinHttpReq.Open('POST', 'http://localhost:1024/WebService1/Service.asmx?op=ValidateMe', False); 
    WinHttpReq.Send(SerialNumber); 

    Result := WinHttpReq.Status = 200; 
end; 

function NextButtonClick(CurPageID: Integer): Boolean; 
var 
    SerialNumber: string; 
begin 
    Result := True; 

    if CurPageID = SerialPage.ID then 
    begin 
    SerialNumber := GetSerialNumber('-'); 
    Result := ValidateSerialNumber(SerialNumber); 
    end; 
end; 
+0

да thanku ... это работает хорошо, но с небольшими проблемами, первым делом, когда оно является ложным я хочу, чтобы показать сообщение на экране не действительный серийный ключ для пользователя, а также как я могу получить серийный номер, введенный пользователем, и сохранить его в переменной? ... Я отредактировал свой вопрос с изменениями, которые я сделал – sebastian

+0

Правильный способ - задать другой вопрос. Этот вопрос спросил, как остановиться, когда пользователь нажимает следующую кнопку, если служба возвращает False, за что я ответил, и вы это приняли. На этот раз я расширю свой ответ, но, пожалуйста, не делайте этого так. В каждой должности должен быть один вопрос. Более того, принятие ответа означает, что сообщение разрешило ваш вопрос, что также означает, что после этого вы не измените вопрос. Благодаря! – TLama

+0

В каком формате вы хотите получить этот серийный номер? «GetSerialNumber», с помощью которого вы можете получить введенную строку, поддерживает разделитель char. Или у вас есть разные требования? – TLama

Смежные вопросы