1,201

(3 replies, posted in Russian)

не могу понять как мне распарсить масив этого ответа

{"success":"1","days":"3","products":[{"1":{"id":"1","login":"33","password":"432","firstName":"23423","lastName":"234324","id_user":"1"},"2":{"id":"2","login":"2222","password":"2333","firstName":"3333","lastName":"34234","id_user":"1"}}]}
procedure DUAll;
var
JSONObject, JSONObjProp: TJSONObject;
JSONString: TJSONString;
JsonArray, JsonArrayCoord: TJSONArray;
i:integer;
begin
 try
 if http.Status() = 200 then
        begin
          frmAdmin.Memo1.Text:=http.responsetext;
          JSONObject:=TJSONObject(TJSONObject.ParseJSONValue(http.responsetext));
        if JSONObject <> nil then begin
            JSONString:=TJSONString(JSONObject.GetPairByName('success').JsonValue);
            if Pos('not session', JSONString.Value) > 0  then begin
            timerAu.Enabled:=False;
            frmAdmin.bAutorization.Caption:='Ошибка авторизации'; end else
            if Pos('1', JSONString.Value) > 0  then begin
                JSONString:=TJSONString(JSONObject.GetPairByName('days').JsonValue);
                frmAdmin.bDays.Caption:='Осталось '+JSONString.Value+' дней';
                JsonArray:=TJSONArray(JSONObject.GetPairByName('').JsonValue);
                for i := 0 to JsonArray.Size-1 do begin
                  JSONString := TJSONString(TJSONObject(JsonArray.Get(i)).GetPairByName(i).JsonValue );
                  frmAdmin.Memo2.Text:=JSONString.Value;
                end;
            end;
           end;
         end;
    except
      //frmAdmin.bAutorization.Caption:='соединение...';
    end;

end;

1,202

(1 replies, posted in Russian)

цвет надписи кнопки не меняется

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=5525&amp;download=0

1,203

(11 replies, posted in Russian)

m.prokhachev wrote:

Мне не нравится такая логика. По моей логике и задумке латентный ведомый комбобокс должен становится явным ведомым только после выбора значения в ведущем комбобоксе, а до этого момента быть самостоятельным и независимым комбобоксом. Поэтому я думаю, что изменение содержимого ведомого комбобокса надо вешать на событие OnChange ведущего комбобокса. Сохранность значения в ведомом комбобоксе для последующих действий - не важна.

procedure Form1_ComboBox1_OnChange (Sender: TObject);
begin
 if form1.ComboBox1.dbItemID<>-1 then form1.ComboBox2.dbSQLExecute('SELECT bb FROM B LEFT OUTER JOIN A ON B.id_A=A.id  WHERE A.id ='+ Form1.ComboBox1.sqlValue)else
 form1.ComboBox2.dbSQLExecute('SELECT bb FROM B '); // иначе вывести все записи
Form1.ComboBox2.dbUpdate;
end;

1,204

(0 replies, posted in Talks about all)

кто с php ка с братом, помогите разобраться в сравнени данных..

мне нужно сравнить это

$slogin = $_POST['log'];
$spass = $_POST['pasl'];
$sid = $_POST['id'];

с этим

$result = mysql_query("SELECT login, pass, id FROM user);

на выходе получить true или false

1,205

(11 replies, posted in Russian)

m.prokhachev wrote:

А почему событие OnClick?

даже и не знаю, просто по привычке ))

mikhail_a wrote:

Умнику с ником vovka3003 скажу, что сообщение об ошибке  "выход за пределы массива" не является "максимумом".
Максимумом является сообщение "выход за пределы массива, который имеет имя такое то".
У меня реальное бизнес-приложение в 12000 строк кода.
Работают уже год в сетевом режиме десять пользователей.
Форма, которая стала выдавать ошибку имеет несколько таблиц с запросами, созданными вручную, а не конструктором.
Так что для поиска ошибки мне надо много строка закомментить, чтобы найти проблему.
Поэтому и вопрос появился - можно ли узнать имя массива, который ошибку вызывает.

вы не комментировали Ваш код?
Тогда просто определите при каких действиях выходит ошибка... к примеру при клике на кнопку или при открытии формы.. переходите в реедактор скрипта по этому действию и смотрите на кого ссылается или может сразу там выполняется..
   
либо Вы просто забыли, что счет начинается с 0 а не с 1.. тоесть  в масиве вы создаете 12 колонок но их на сам деле 0-11 в итоге вы обращаетесь к колонке 0-12 (13) но ее не существует...
     
и еще у меня была ошибка с произвольной таблицей и программа выводила адрес ошибки ..  форма-таблица-колонка..

1,207

(17 replies, posted in Russian)

vovka3003 wrote:
sibprogsistem wrote:

Ваш пример у меня не работает..  посмотрите видео ...

Ничего не пропустили?
https://youtu.be/ZfeqnNAMvjg

Да в конце я про это вспомнил ))) именно это и навело на мысль о том, что нужно больше времени дать

1,208

(11 replies, posted in Russian)

procedure Form1_ComboBox1_OnClick (Sender: TObject);
begin
if form1.ComboBox1.dbItemID<>-1 then form1.ComboBox2.dbSQLExecute('SELECT bb FROM B LEFT OUTER JOIN A ON B.id_A=A.id  WHERE A.id ='+ Form1.ComboBox1.sqlValue);
Form1.ComboBox2.dbUpdate;
end;

1,209

(1 replies, posted in FAQ)

Асинхронный ввод-вывод—это форма обработки ввода/вывода, позволяющая продолжить обработку других задач, не ожидая завершения передачи.
 
подробное описание в нутри проекта..

1,210

(17 replies, posted in Russian)

в том-то и дело, что я должен был получить ошибку (мол такого города нет) хотя и в  случае указания реального города ответа все равно нет...
теймер дербанил, потому что пытался вызвать хоть какую-то ошибку...
данные недоступны ( не является конкретикой)  - именно по этому и просил помочь...
ну вот хоть теперь я понял, что все дело было в setTimeOuts, нужно разобраться как с ним работать.....
получать ответ можно из тойже процедуры просто http.setTimeOuts(90000,90000,90000,90000); почему-то не срабатывает и процедура не успевает получить ответ...
сделал это с помошью таймера и все ок...

1,211

(17 replies, posted in Russian)

vovka3003 wrote:

напишите за меня эту асинхроннасть

Как? Я оттестил и выдал вам несколько рабочих скриптов. В ответ вы опять что-то покорёженное скинули, можно было и не крепить к топику.
У меня все из того, что я отправил - функционирует, но разумеется оно требует правки под конкретные условия вашего индивидуально-заточенного php-скрипта. Что вы предлагаете - приехать к вам настроить на месте..?

я прошу не написать за меня а прошу помочь разобраться... Ваш пример у меня не работает..  посмотрите видео ... мой пример хотябы признаки жизни подает, но я не могу понять что за ошибка такая 80020009..
 
сколько пролазил по гуглу, нашел только две вещи  ... это какая-то ошибка SQL (майкрософт так написал))))) )
и наткнулся на winhttp.dll - что наводит на мысыль о том, что в этом играет роль сама ОС (((

https://yadi.sk/i/UvE0ePvjQAt0RQ

1,212

(17 replies, posted in Russian)

помогите сделать эту асинхроннасть

http.open('GET', url, False); - работает...
http.open('GET', url, True); - ошибка OLE 80020009 (чего-то не хватает)..

1,213

(24 replies, posted in Russian)

импорт/экспорт - супер..
но хотелось бы некоторые таблицы скрыть

1,214

(17 replies, posted in Russian)

программа многопользовательская, а значит не могу знать какой windows будет использоваться
потому php-mailer находится на хостинге
провайдера я в данном случае не выбираю...
465 и 587 перекрывают.. можно их открыть, но только для меня...

1,215

(17 replies, posted in Russian)

в том- то и дело, я не могу знать какой windows использует пользователь и как я уже писал ранее интернет провайдер блакирует порты, так я к примеру не могу отправлять пьсьма стандарными средствами, у меня даже почтовые клиенты не работают, а письмо должно обязательно отправлятся..
что касается спамеров - так файл скрипта php можно защитить, а письма в итоге все равно будут только на определенные адреса отправляться..

1,216

(17 replies, posted in Russian)

vovka3003 wrote:

Я не пойму зачем вам внешний php-костыль, скинул ведь нормальную (встроенную в винду) функцию на базе CDO.Message

что касается отправки писем, не хочу попасть на касяки в версиях windows и желаниях провадеров потому использую phpsendler..
потом хотел сделать подключение к базе данных через ssl серификат, но оказалось, что это не такто просто, джино вроди как может дать такие возможности но их вертуальный сервер упал через неделю после всех настроек, облака стоят много... в общем решил сделать API(получается дешево и сердито),  api та работает  можно и мобильныео приложение написать для работы с БД.. но вот опять касяк программа должна  время от времени обмениваться данными с этой БД (не будет же пользователь ожидать когда этот обмен закончится)..
   
в общем встал и не понимаю а стоит теперь все это делать?
   
может с батником попробовать... запускать батник, тот будет запускать доп приложение в фоновом режиме и оно будет производить этот обмен

1,217

(17 replies, posted in Russian)

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

1,218

(17 replies, posted in Russian)

короче самый простой вариант проверить работоспособность

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
http: variant;
url: string;
begin
 url:='http://myvisualdatabase.com';
 http:=createoleobject('WinHttp.WinHttpRequest.5.1');
 http.open('GET', url, False);
 http.send;
 showmessage(http.responsetext);
end;

получаю ответ... но вот проблема ...  Программа ожидает ответ и не позволяет с ней работать...

1,219

(17 replies, posted in Russian)

vovka3003 wrote:

Вы слили в паблик свой пароль кажется...

ерунда,  его можно сотни раз переписать ...

1,220

(17 replies, posted in Russian)

vovka3003 wrote:

Может нужно это?

Последний Ваш пример постоянно выдает ошибку (не допустимое значение конфигурации)...
решил вернуться к первым примерам ...
суть дела вот в чем, парраметры я передаю в php на хосте..

сам php

<?php
 
require 'mail/PHPMailerAutoload.php';
 
$vernii_shifr = $_REQUEST[pass];
$pol_shifr = '1230';// пороль страницы

If($vernii_shifr == $pol_shifr){
$mail = new PHPMailer;
$mail -> isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html'; 
$mail ->Host = $_REQUEST[Host]; //smtp адрес
$mail ->SMTPAuth = true;
$mail ->Username = $_REQUEST[Username];    //Логин
$mail ->Password = $_REQUEST[Password];     //Пароль
$mail ->SMTPSecure = $_REQUEST[SMTPSecure];   
$mail ->Port = $_REQUEST[Port]; // порт
 
$mail ->setFrom($_REQUEST[setFrom]); 
$mail ->addAddress($_REQUEST[addAddress]);//Получатель

if (array_key_exists($_REQUEST[sendFile], $_FILES)) {
$uploadfile = tempnam(sys_get_temp_dir(), sha1($_REQUEST[sendFile][sendFile]));
if (move_uploaded_file($_FILES[sendFile]['tmp_name'], $uploadfile)) {
$mail ->addAttachment($uploadfile, $_REQUEST[sendFile]);  //Прикрепить файл 
}
}

$mail ->isHTML(False);
 
$mail ->Subject = $_REQUEST[Subject]; //Тема письма
$mail ->Body    = $_REQUEST[mmessage];//<b>HTML</b> версия письма
//$mail ->AltBody = 'fggg';//Текстовая версия письма, без HTML тегов (для клиентов не поддерживающих HTML)

//Отправка сообщения
if(!$mail->send()) {
    echo 'Ошибка при отправке. Ошибка: ' . $mail->ErrorInfo;
} else {
    echo 'Сообщение успешно отправлено';
}
} else {
echo 'спам';
}

рабочая функция MVDB

function mailerphp (Host,Username,Password,SMTPSecure,Port,mailFrom,mailTo,Subject,mailMessage: string ): string;
var
    slParam: TStringList;
    pass:string;
begin
    pass:='1230';  // пороль страницы
    slParam := TStringList.Create;
    slParam.Add('pass='+pass);
    slParam.Add('Host='+Host);
    slParam.Add('Username='+Username);
    slParam.Add('Password='+Password);
    slParam.Add('SMTPSecure='+SMTPSecure);
    slParam.Add('Port='+Port);
    slParam.Add('setFrom='+mailFrom);
    slParam.Add('addAddress='+mailTo);
    slParam.Add('Subject='+Subject);
    slParam.Add('mmessage='+mailMessage);

    result:= HTTPPost('http://service-vv.ru/sendmail.php',slParam);
end;

если я правельно понял Ваши примеры то это должно быть так..

var
    xhr:variant;

procedure Form1_OnClick (Sender: TObject);
begin
  xhr:=0;
end;

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin

    WinHttpPost('https://service-vv.ru/sendmail.php','{"pas": "1230","Host": "smtp.jino.ru", "Username": "key@service-vv.ru","Password": "1009831995qw","SMTPSecure": " ","Port": "587","setFrom": "key@service-vv.ru","addAddress": "sibprogsistem@mail.ru","Subject": "test","mmessage": "test"}');
end;

function WinHttpPost(Url,Data: string):variant;
begin             
 try
    xhr.Open('POST',url,true);
    xhr.SetRequestHeader('content-type','application/json; charset=utf-8');
    xhr.Send(Data);               
  except
    ShowMessage(ExceptionMessage);
  end;
end;


begin
  xhr := CreateOleObject('WinHTTP.WinHTTPRequest.5.1');
end.

но у меня опять ничего не происходит...

1,221

(17 replies, posted in Russian)

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


   
Ладно, бог с ним, с этим вариантом...

1,222

(17 replies, posted in Russian)

даже с вашим примером не ответа не привета...

1,223

(17 replies, posted in Russian)

vovka3003 wrote:

В этом случае нужно менять GET на POST и прописывать ваши параметры в Send.

без результатно

1,224

(17 replies, posted in Russian)

а как применить на процедуре отправки письма

  function mailerphp (Host,Username,Password,SMTPSecure,Port,mailFrom,mailTo,Subject,mailMessage: string ): string;
var
    slParam: TStringList;
    pass:string;
begin

    slParam := TStringList.Create;
    slParam.Add('Host='+Host);
    slParam.Add('Username='+Username);
    slParam.Add('Password='+Password);
    slParam.Add('SMTPSecure='+SMTPSecure);
    slParam.Add('Port='+Port);
    slParam.Add('setFrom='+mailFrom);
    slParam.Add('addAddress='+mailTo);
    slParam.Add('Subject='+Subject);
    slParam.Add('mmessage='+mailMessage);

    result:= HTTPPost('http://url/sendmail.php',slParam);
end

у меня получается полько пустое сообщение моментально получить )))))

1,225

(17 replies, posted in Russian)

вот оно что!!
СПАСИБО!