Привет эксперты! есть проблемка одна, раньше я писал програмы на delphi, но в связи с тем что програмы получаются большие, решил перейти билдеру. Написал небольшую програмку на билдере версии 3.0, програма работает нормально, но на другом компе где нет билдера програмка выдает сообщение что нет файла vcl35.bpl. Подскажите плз, может надо какие то опции в самом билдере поменять? заранее спасибо...
Добрый день, kill! Енто как в Делфи, в опциях можно отключить Runtime Packages - пакеты времени выполнения, и тогда программа по размеру становится намного меньше, но может работать только с установленным Делфи. Так и в билдере. Тебе надо просто отключить в опциях одну галочку: Project>Options>Build with Runtime Packages Ответ отправлен: 04.06.2004, 18:32 Отправитель: CJ Отвечает THE_PRO
Приветствую Вас, kill! Убери флажок "Biuld with runtime packages" Ответ отправлен: 04.06.2004, 15:29 Отправитель: THE_PRO Отвечает CrackLab
Приветствую Вас, kill! Меню Project -> Options. Закладка Packages. Убираешь галку "Build with runtime packages". Закладка Compiler. Жмешь Release. Ответ отправлен: 04.06.2004, 13:23 Отправитель: CrackLab Отвечает sir henry
Доброе время суток, kill! Bpl - это Борландовский пакет с общими функциями, которые не включаются в программу, а идут отдельно (в пакете). За счет этого, если Вы запускаете много откомпилированых Вами в Билдере программ, экономится память компьютера. В случае, если Вы запускаете только одну подобную програму, то никакой экономии нет :). К сожалению, у меня нет под рукой третьего Билдера, скажу примерно. Вы должны найти в настройках проекта что-то типа "Build with runtime packages" и отключить эту птичку. Примерно она должна находиться в меню "Project->Options...->Packages". Если Вы отключите эту опцию, то все необходимые функции будут включены в Вашу программу, но и объем ее возрастет существенно. Однако общий объем что в том, что в другом случае (Ваша_прога+пакеты или Ваша_прога_все_включено) будет одинаков. Так что зря Вы ушли от Дельфи
:)). В качестве рецепта по уменьшению размеров программ (радикального) можно посоветовать или писать вручную на чистом WinAPI или в Дельфи применять специальную библиотеку KOL (можно найти на сайте www.delphimaster.ru). Но в любом случае VCL следует избегать, т.к. это из-за VCL получается такой сумашедший объем программ, что на Дельфи, что на Билдере . Ответ отправлен: 05.06.2004, 06:44 Отправитель: sir henry
Вопрос № 1601
В дополнение к ответу на вопрос №1592 И-и-э-э-х-х... Если бы создание логики программ от меня зависело... А так - основная программа написана в среде FoxPro 2.6 for DOS. И логику ее менять - задолбаешся. Проще написать новую программу. Просто основная программа кроме этой задачи делает ещё огромную кучу всяких других... Просто при формировании файлов у пользователя есть возможность запустить bat-файл. Вот в нем моя программа и вызывается.
Доброе время суток, Alexandr! Ну что я могу еще сказать, я тоже думаю что проще заново написать :)). А исходники проги на фоксе есть? Может стоит в ней покопаться и сделать весь функционал, который дает Ваша программа, там? Может быть Вам разнести функции Вашей программы на две программы, т.е. пользователи будут запускать не один bat, а два? Т.е. сначала батник, который делает архивацию и резервное копирование, а потом второй батник, который копирует в каталог для исходящих файлов. Ответ отправлен: 05.06.2004, 06:54 Отправитель: sir henry
Вопрос № 1602
значит такая проблема в DLL следующий код library svprg; uses SysUtils, Classes, Windows; function strshifr(str:string):string;stdcall; var i:integer; begin for i:=1 to length(str) do str[i]:=char(byte(str[i]) xor 1234567); Result:=str; end; function intshifr(int:integer):integer;stdcall; begin int:=int xor 1234567; Result:=int; end; {$R *.res} exports strshifr, intshifr; begin end. из exe вызываю следующим способом function strshifr(str:string):string;stdcall; function intshifr(int:integer):integer;stdcall; var Form1: TForm; implementation {$R *.dfm} function strshifr; external 'svprg.dll'; function intshifr; external 'svprg.dll'; при компиляции выскакивает окно с ошибкой Invalid Pointer Operation, как исправить эту ошибку?
Добрый день, morph! При компиляции чего выскакивает такая ошибка? Библиотеки или программы? При компиляции Вашей билиотеки, у меня ни какой ошибки не выскочило, значит дело в Вашей прогграме. Ищите там. При компиляции, кроме сообщения об ошибке, должен еще выскакивать номер строки с ошибкой. "Invalid Pointer Operation" - это "Неправильная операция с указателем". Ответ отправлен: 07.06.2004, 03:56 Отправитель: sir henry Отвечает CrackLab
Здравствуйте, morph! У меня вроде все нормально, ошибок при компиляции нет. Разве что res файл не найден, но я убрал эту директиву, и объявление функции из dll требовало указания возвращаемого значения, что я тоже поправил. После этого ошибок при компиляции и работе уже не было. Можете попробовать упаковать ваш проект (только необходимые файлы, по минимуму) и закачать его куда-нибудь. Я скачаю и посмотрю. Ответ отправлен: 06.06.2004, 18:21 Отправитель: CrackLab
Вопрос № 1603
Добрый день. У меня такая проблема. Пишу код: procedure TEditr.N11Click(Sender: TObject); var BlSt : TADOBlobStream; begin if not OpenPictureDialog2.Execute then exit; OleContainer1.CreateObjectFromFile(OpenPictureDialog2.FileName,False); With ADOTable1 do begin Edit; BlSt:=TADOBlobStream.Create(ADOTable1Risunok,bmReadWrite); OLEContainer1.SaveToStream(BlSt as TStream); BlSt.Free; Post; end; end; При запуске сохраняю в базу данных большой рисунок (более 2 МБ). Закрываю базу. При новом открытии базы выдаёт ошибку (что-то с Ole). При изменении кода: procedure TEditr.N11Click(Sender: TObject); var BlSt : TADOBlobStream; begin OleContainer1.CreateObjectFromFile(\'D:РИСУНКИОткрыткиВил.bmp\', False); With ADOTable1 do begin Edit; BlSt:=TADOBlobStream.Create(ADOTable1Risunok,bmReadWrite);
OLEContainer1.SaveToStream(BlSt as TStream); BlSt.Free; Post; end; end; Работает всё нормально. Подскажите, пожалуйста, почему?. И ещё вопрос. Сохраняю в базу большой рисунок. База была 1Мб, стала 3 Мб. Удаляю этот рисунок, но база все-равно осталась 3Мб. Как очистить базу от удалённых данных?.(Работаю с ADO, база MS ACCESS). Я, правда, задавал этот вопрос, но подтверждения что он дошёл не было. (Может e-mail неправильно указал). Извините за неудобства. Спасибо.
Доброе время суток, Vova! 1. Видимо в первом случае то, что сохраняется в Вашу базу - не рисунок. Я краем уха слышал, что у MS Aсcess есть подобные проблемы, но точно сказать не могу, потому что с Access не работаю. 2. По всей видимости, после удаления рисунка из базы, там остается пространство под него. В самом Access сжать базу можно с помощью меню: "Сервис→Служебные программы→Сжать и восстановить БД". Так же база может сжиматься автоматически при закрытии ее. Для этого в опциях выставляется специальная птичка. Но опять же, это если работать непосредственно в Access. Ответ отправлен: 07.06.2004, 04:15 Отправитель: sir henry
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.