Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1218
Благодарности: 955

Профиль | Отправить PM | Цитировать


Цитата R.i.m.s.k.y.:
тоже сначала хотел несколькоми одномерными массивами обойтись, криво выходит, в цикле перебирать тяжело, появляются многомерные вложенные if'ы, не кошер в общем. »
R.i.m.s.k.y., как-то не вяжется пример массива c "5 столбцов", здесь их больше.
Цитата R.i.m.s.k.y.:
Пример массива:
['Москва','ул','Пушкарная','',''
'','','','',''
'','Ленинград','','пер','Московский'
...] »

R.i.m.s.k.y., вариант №2 способа узнать есть ли Интернет:
IsInternetActive.iss

Код: Выделить весь код
[code]
const
    INTERNET_OPEN_TYPE_PRECONFIG = 0;
    INTERNET_FLAG_NO_CACHE_WRITE = $4000000;
    INTERNET_FLAG_PRAGMA_NOCACHE = $100;
    INTERNET_FLAG_RELOAD = $80000000;
    HTTP_QUERY_STATUS_CODE = 19;
    HTTP_STATUS_OK = 200;

function InternetOpen(lpszAgent: String; dwAccessType: DWORD; lpszProxyName, lpszProxyBypass: Variant; dwFlags: DWORD): Integer; external 'InternetOpenA@wininet.dll stdcall';
function InternetOpenUrl(hInternet: Integer; lpszUrl, lpszHeaders: String; dwHeadersLength, dwFlags: DWORD; dwContext: Integer): Integer; external 'InternetOpenUrlA@wininet.dll stdcall';
function InternetCloseHandle(hInternet: Integer): Boolean; external 'InternetCloseHandle@wininet.dll stdcall';
function HttpQueryInfo(hRequest: Integer; dwInfoLevel: DWORD; var lpvBuffer: Char; var lpdwBufferLength: DWORD; var lpdwIndex: DWORD): Boolean; external 'HttpQueryInfoA@wininet.dll stdcall';


function IsInternetActive(): Boolean;
var
    hInt, hFile: Integer;
    lpBuffer: array [0..3] of Char;
    lpdwIndex, lpdwBufferLength: DWORD;
begin
    try
        hInt := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
        if hInt <> 0 then
        try
            hFile := InternetOpenUrl(hInt, 'http://microsoft.com', '', 0, INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_RELOAD or INTERNET_FLAG_PRAGMA_NOCACHE, 0);
            lpdwIndex := 0;
            lpdwBufferLength := sizeof(lpBuffer);
            if HttpQueryInfo(hFile, HTTP_QUERY_STATUS_CODE, lpBuffer[0], lpdwBufferLength, lpdwIndex) then
                Result := StrToInt(lpBuffer[0]+lpBuffer[1]+lpBuffer[2]) = HTTP_STATUS_OK;
        finally
            InternetCloseHandle(hFile);
        end;
    finally
        InternetCloseHandle(hInt);
    end;
end;

procedure InitializeWizard();
begin
    if IsInternetActive() then
        MsgBox('yes', mbInformation, MB_OK)
    else
        MsgBox('no', mbInformation, MB_OK);
end;


Цитата El Sanchez:
Юникодный китайский Inno с интерфейсами может работать (см. CodeAutomation2.iss), можно попробовать портировать. »
Beginner85, попробовал - не получилось, либо access denied, либо чего-то там про токены.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:09, 16-02-2012 | #827