Добрый день! Столкнулся с такой проблемой, после запуска n-ого количества страниц в TWebBrowser, переполняется оперативка и приложение виснет. Попытался найти ответ в сети, но так ничего вразумительного не нашел, кроме того, что это баг самой библиотеки. Даже после закрытия формы с браузером IE продолжает выполнять известную только ему одному работу. Не помогают ни TWebBrowser.Stop, ни TWebBrowser.Free, ни TWebBrowser.Navigate('about:blank'). Может кто-то сталкивался с этой проблемой, буду весьма признателен за подсказку.

k245 wrote:

Интересный вариант, я видел подобные предложения от разных стартапов, но ни разу не видел, чтобы это работало в реальной жизни.

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

Очень жаль, если автор забросил проект. Любителей халявы можно легко отсечь, если организовать сообщество по типу закрытого клуба, с ограниченным количеством его членов и взносами на регулярной основе. Думаю, в таком варианте останутся только те, кто ценит чужой труд, и кому интересно развитие проекта.

Наконец-то дошли руки довести до ума скрипт передачи данных по протоколу FTP. Как я уже писал, проблема передачи графических данных в установленном типе протокола передачи данных. Библиотека Indy по умолчанию устанавливает ASCII, но для передачи графики этот тип данных не подходит, нужен BINARY. В описаниях функции TIdFTP установка типа протокола выглядит следующим образом:

ftp.TransferType := ftBinary;

Но MVD 'ftBinary' не понимает, и выдает ошибку 'Undeclared identifier'. Логическим путем пришел к выводу, что вся проблема в синтаксисе, моя догадка подтвердилась) Тип данных определяется числовым значением: 0 - ASCII, 1 - BINARY. 

ftp.TransferType := 1 // BINARY;

Проверил на передаче файлов в форматах JPG и PNG, файлы передаются правильно, качество переданного изображения соответствует оригиналу.
Пример рабочего кода:

procedure frmForma_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
  ftp: TIdFTP;
begin
ftp:=TIdFTP.Create(Application);
  try
    try
      ftp.Host:='ftp.server.my'; // Fдрес FTP-сервера
      ftp.Port:=21;
      ftp.Username:='test@server.my';//Логин
      ftp.Password:='123456789';//Пароль
      ftp.Connect;
      ftp.Passive := true; // Важный параметр, как оказалось, на больнистве FTP-серверов по умолчанию стоит активный режим, и передача файлов не проходит
      ftp.TransferType := 1; //Устанавливаем тип передаваемых даных: 0 - ASCII, 1 - BINARY 

         ftp.ChangeDir('/image/'); //Каталог на сервере с которым работаем
         ftp.Put('D:\tmp\img.jpg','img.jpg'); //Отправка файла
         //ftp.Get('img.jpg,'D:\tmp\img.jpg, false); // Прием файла
         ShowMessage('Передача файла успешно завершена!');
    finally
    ftp.free;
    end;
  except
    ShowMessage('Ошибка передачи файла!');
  end;
end;

На предмет приема файлов не тестировал, думаю, будет все нормально и с приемом.

mcsimm wrote:

Добрый день!
Помнится, давно ещё при работе с FTP с командной строкой был параметр TYPE, который может быть или ASCII, или BINARY. Видимо, по умолчанию передаётся в ASCII.

Совершенно верно, дело в типе передаваемых данных. Я поднял информацию по библиотеке Indy10, после установления соединения с сервером нужно указать тип передаваемых данных, выглядит это вот так:

ftp.TransferType := ftBinary;

Но MVD почему-то не принимает эту строку, пишет "Undeclared identifier: 'ftBinary'". Честно говоря, разбираться некогда, пока отложил этот вопрос, но обязательно к нему вернусь.

Добрый день, системные права доступа к компоненту TreeWiew не работают, версия MVD 6.5, пришлось прописывать вручную.
Также я ранее писал, что при работе с деревом произвольно меняется вид курсора. Еще хотелось бы видеть дерево статичным, не раскрывающим все ветки при обновлении компонента. Сейчас приходится прописывать под каждое событие сворачивание дерева и переход на нужный нод. Это очень напрягает, если честно.

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

Еще раз спасибо sibprogsistem за подсказку, все получилось.

Рабочий код работы с FTP:

procedure frmForma_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
  ftp: TIdFTP;
begin
ftp:=TIdFTP.Create(Application);
  try
    try
      ftp.Host:='ftp.server.my'; // Fдрес FTP-сервера
      ftp.Port:=21;
      ftp.Username:='test@server.my';//Логин
      ftp.Password:='123456789';//Пароль
      ftp.Connect;
      ftp.Passive := true; // Важный параметр, как оказалось, на больнистве FTP-серверов по умолчанию стоит активный режим, и передача файлов не проходит

         ftp.ChangeDir('/image/'); //Каталог на сервере с которым работаем
         ftp.Put('D:\tmp\img.jpg','img.jpg'); //Отправка файла
         //ftp.Get('img.jpg,'D:\tmp\img.jpg, false); // Прием файла
         ShowMessage('Передача файла успешно завершена!');
    finally
    ftp.free;
    end;
  except
    ShowMessage('Ошибка передачи файла!');
  end;
end;

Спасибо за наводку, что-то я протупил)

Поинтересовался, как реализована функция обмена файлами через FTP в Delphi. Для этого используется библиотека TIdFTP. Вопрос к разработчикам, а в MVD есть возможность пользоваться данной библиотекой?

Добрый день, есть необходимость сохранять некоторые файлы хранящиеся в базе MySQL на расшаренный Web Disk. Как это можно реализовать в MVD? Буду признателен за любой совет, особенно за совет с примером кода)

Добрый день! При работе с TreeView произвольно меняется вид курсора мыши, причем не обязательно при обновлении самого объекта, но и при обновлении связанного TableGrid. В чем может быть причина, и как ее устранить? Версия MVD - 6.5, в более ранних версиях не проверял.

13

(21 replies, posted in Russian)

Вчера выскочил какой-то странный глюк в новой версии (6.5), после закрытия программы не сохранились изменения проекта за последние пару часов работы. При этом перед закрытием приложение запускалось через кнопку "Run project". По привычке, что в данном случае все изменения сохраняются автоматически, отдельно проект не сохранял, да и MVD не поинтересовалась, желаю ли я что-то сохранить. Сижу восстанавливаю) Может это конечно у меня какой-то индивидуальный глюк системы, но раньше подобного ни разу не было.

Большое спасибо!)

Добрый день, прошу помочь с решением следующего вопроса. Есть основной файл базы SQLite, который расположен в локальной сети, в случае отсутствия доступа к нему необходимо переключиться на резервную базу, расположенную в папке приложения без вызова диалога настроек. Как можно это реализовать? Порылся на форуме, но не нашел ответ на свой вопрос.

Есть необходимость подтверждать отдельные действия пользователей паролем. К примеру, удаление документов, минуя уже установленные для этой функции ограничения. В проекте используется стандартная авторизация MVB. Какой функцией можно проверить пароль пользователя?

Создал диалог (MessageDlg) поставил для него тип "mtConfirmation", но вместо вопросительного знака отображается почему-то восклицательный.
На функционал, понятное дело, это не влияет, но визуальное восприятие не то)
Версия программы - 6.3

К слову, а есть возможность влезть в свойства диалоговых форм, исправить значения "caption" для формы диалога и ее кнопок?

Вопрос снимается, проблема решена, не поставил в форме ввода данных для Edit признак "Currency", протупил smile

Есть таблица содержащая поле типа «Деньги», при вводе данных в качестве разделителя целой и дробной части система принимает только запятую. Но есть необходимость периодически обновлять эти данные, делать групповую операцию, причем весь список увеличивается на равное значение, вводимое в поле формы корректировки. Расчет выполняется посредством запроса на обновление (UPDATE). Столкнулся с такой проблемой, при вводе в поле формы корректировки значения типа «1,24», где в качестве разделителя целой и дробной части используется запятая, мое денежное поле обновляется только на целую часть, но если в Edit я ввожу число, где разделитель точка (1.24), расчет происходит корректно. В чем может быть проблема? Рассказывать пользователям, что в одной форме мы используем « , », а в другой « . », не вариант.

20

(13 replies, posted in Russian)

indigen wrote:

Zenja, леса конечно модульная конструкция, но считается не совсем так. Базовый модуль это 2 рамы, 2 ригеля, 3 настила (щита), 1 диагональная стяжка и 1 горизонтальная. А вот когда это большой фасад уже считается иначе. Вплоть до учета количества подъемов. Количество мест крепления тоже не всегда по расчету проходит (типовое).

Да я и не настаиваю, от строительства далек) Просто пример расчета сделал, в своем понимании)

21

(13 replies, posted in Russian)

Я все-таки набросал пример для расчета. Идея проста, строительные леса - это модульная конструкция. Один модуль имеет определенные габариты и определенное количество элементов конструкции. Также один модуль имеет конкретную площадь, и цифра эта неизменяемая. Забиваем в справочники все необходимые параметры для каждого элемента. Затем исходя из площади которую нам надо рассчитать, определяем количество этажей конструкции и совмещенных секций. Это нужно, чтобы рассчитать корректировку количества. Т.к. связанные между собой в горизонте секции будут иметь общие стойки, а значит их пойдет меньше. В общем, все свои действия постарался описать в скрипте, можно еще больше эту систему автоматизировать. Например описать в справочнике габариты лесов от разных производителей, и связать это со справочником элементов, а также с расчетом площади, этажности, и секционности конструкции. Думаю, дальше разберетесь)

22

(13 replies, posted in Russian)

Я посмотрел, данный пример исправлять не буду, я сделал бы по другому, но идея понятна. Чуть освобожусь, и к вечеру свое видение решения вопроса предложу.

23

(13 replies, posted in Russian)

stas.kodpi wrote:

ок.
А мне надо, что-бы сразу в доп поле, которое будет возле тектэдитов длины и высоты. Как сделать?

Если я правильно понял, то создаем для компонента Edit (или другого) событие OnChange, в котором прописываем расчет для доп. поля.

Например:

procedure frmForma_Edit2_OnChange (Sender: TObject);
begin
frmForma.Edit3.Value := frmForma.Edit1.Value * frmForma.Edit2.Value;
end;

В результате доп. поле Edit3 получит рассчитанный показатель на основе переменных из полей Edit1 и Edit2. Само собой, формулу вычисления можно задать любую.

24

(13 replies, posted in Russian)

Добавляем для вашей переменной логическое поле (ДА/НЕТ). Где значение ДА - участвует в расчете, соответственно значение НЕТ - не участвует в расчете. А дальше дело техники. Но вообще, конечно, не совсем понятна задача, вы не сформулировали толком какой именно результат хотите получить.

25

(13 replies, posted in Russian)

Составьте для начала формулу расчета. Затем все просто, вносите в форму переменные и рассчитываете. Формулу расчета можно в отчет вывести, или прямо в поле формы результат выводить. Посмотрите небольшой пример, в нем итоговый расчет в отчете. Рассчитываются издержки обращения (затраты связанные с закупкой товара), насколько они удорожают товар, пропорциональный метод.