Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: Dennica
Дата сообщения: 01.10.2007 08:30
relictus
помоему пути до исходников должны находиться в списке путей выше чем пути до dcu для сторонних компонентов
Автор: svs123456789
Дата сообщения: 01.10.2007 08:54
кто - нибудь делал дистрибутивы для приложений, использующих рантайм библиотеки борланд?
можете поделиться опытом?

есть программа на delphi использующая динамические библиотеки bpl
как автоматически получить список этих библиотек?
(для передачи в инсталляционный пакет создаваемый при помощи Inno Setup)

PS
список в Packages page (Project|Options, Component|Install packages)
содержит множество bpl которые программа не использует
к тому же хочется автоматизировать этот процесс

PPS
например, InstallShield умеет автоматически находить dll необходимые для работы exe !
НО не знает о BPL (рантайм библиотеки борланд)


Автор: ErshovSP2004
Дата сообщения: 01.10.2007 09:59
svs123456789
просмотри EXE'шник например плагином ТС FileInfo

Добавлено:
ух наверно зря написал не проникся тем что процес автоматизировать нужно.
Автор: abv
Дата сообщения: 01.10.2007 13:06
svs123456789
Если есть исходники, то используемые bpl пишутся в cfg файле, при желании
можно и автоматизировать процесс получения их оттуда.
Автор: RomanTim
Дата сообщения: 01.10.2007 13:10
Dennica
Очередность путей не критична если нет модулей с одинаковыми именами

relictus
Дело может быть в том, что компоненты при установке скомпилились без отладочной информации (так package настроен). Я чтобы не возиться с перекомпиляцией всего пакета, если такой попадается (да и нужные опции компилятора могут где-то в тексте устанавливаться - то еще удовольствие искать), на время отладки кидаю нужные модули компонента в папку с проектом, а потом удаляю
Автор: relictus
Дата сообщения: 01.10.2007 13:29
RomanTim

Цитата:
на время отладки кидаю нужные модули компонента в папку с проектом

Гениально! Спасибо!
Автор: winsent
Дата сообщения: 01.10.2007 15:52
Добрый день, помогите узнать название компоненты картинка тут: http://slil.ru/24921254 (80 Кб). На сколько я понимаю она не самописная так как видел уже не раз.
Автор: Arvur
Дата сообщения: 01.10.2007 20:01
winsent
Ммм... А это не обычный TWebBrowser?
Автор: rs
Дата сообщения: 02.10.2007 07:26
AntonVA1
что-то "Мир Interbase" так и не доехал...
можно на рапиду выложить?
Автор: vserd
Дата сообщения: 02.10.2007 08:19
rs

Цитата:
что-то "Мир Interbase" так и не доехал...

В личку или в соответствующий топик в другом разделе. Там точно есть.
Автор: Rounder2000
Дата сообщения: 03.10.2007 15:00
Может кто-нить подскажет - заранее прошу прощения если этот вопрос поднимался уже - совсем нету времени "проглотить" форум.
Есть база в Оракле, приложение для работы с ней на D6. Каким образом можно организовать выгрузку из датасета в DBF-файл?
Автор: RostY
Дата сообщения: 03.10.2007 16:13
если доступ к Oраклу через БДЕ то через BatchMove

Добавлено:
а этим я делаю из DOA, то должно работать с любыми датасетами
[more]
Procedure TDM1.ExportTable(tabname:String);
var i:integer;
Begin
With DM1.TempQry do
begin
Close; SQL.Clear;
SQL.Add('select * from '+tabName);
OpenQuery(TempQry);
Table1.Close;
Table1.Fields.Clear;
Table1.FieldDefs.Assign(TempQry.FieldDefs);
Table1.TableName:=TabName;
Table1.CreateTable;
Table1.Open;
TempQry.First;
while not TempQry.Eof do
begin
Table1.Append;
for i:=0 to TempQry.FieldCount-1 do
Table1.Fields[i].Value:=TempQry.Fields[i].Value;
Table1.Post;
TempQry.Next;
end;
Table1.FlushBuffers;
Table1.Close;
end;//with
End; // Procedure {}
[/more]
Автор: jemiko
Дата сообщения: 03.10.2007 17:12
winsent
Может это, RichView.
hТТp://www.trichview.ru/
Автор: AntonVA1
Дата сообщения: 03.10.2007 22:25
rs
уже ок

svs123456789
Могу дать решение проблемы с помощью jvcl:
в uses добавь это: JclPeImage, JclFileUtils
писалось наспех, поэтому ногами не бить

[more]
Первая кнопка создает список, вторая копирует в папку только bpl
procedure TOptionsForm.btnCreateBPLListClick(Sender: TObject);
var FileName:TFileName;
begin memListBPL.Lines.Clear;
FileName:=Application.ExeName;
if IsValidPeFile(FileName) then
PeImportedLibraries(FileName, memListBPL.Lines, False, True)
else
ShowMessageFmt('The file "%s" is not valid PE file.', [FileName]);
end;

procedure TOptionsForm.Button6Click(Sender: TObject);
var NewFilePath:String;
i: integer;
begin btnCreateBPLList.Click; memCopyBPL.Lines.Clear;
NewFilePath:=ExtractFilePath( Application.ExeName)+'Send\Bpl\';
ForceDirectories(NewFilePath);
for I := 0 to memListBPL.Lines.Count - 1 do
begin
if ExtractFileExt(memListBPL.Lines[i])='.bpl' then
if FileCopy(memListBPL.Lines[i], NewFilePath+ExtractFileName(memListBPL.Lines[i]))
then memCopyBPL.Lines.Add(memListBPL.Lines[i]+' скопирован');
end;
end;

[/more]
Автор: b1t
Дата сообщения: 03.10.2007 23:44
Привет всем !

народ, кто может мне помочь сделать несколько упражнение под DELPHI ?
у кого есть свободное время? а то препод задал лабораторки, но я не разбираюсь с программированием.
Если у кого-то найдется время, или захочет помочь - то пожалуйста или здесь пишите, или в ПМ !
БУДУ ОЧЕНЬ БЛАГОДАРЕН !
Автор: mauar
Дата сообщения: 04.10.2007 09:38
Люди помогите пожалуйсто, как в моем коде реализовать метод ожидания окончания действия функцией WaitForSingleObject:
Есть форма, на форме расположен PageControl , прописана одна команда, с несколькими действиями, вот такого типа:

Begin
If Cmd.Name = 'Экскурсия' Then Begin // Действие 1
Chars.MoveTo(360,150,1);
end;
end;

Begin
If Cmd.Name = 'Экскурсия' Then Begin // Действия 2
Chars.Play('Explain');
end;
end;

Begin
If Cmd.Name = 'Экскурсия' Then Begin // После окончания действия 2,
PageControl1.ActivePage:= TabSheet4; //происходит переключения на
//страницу PageControl с индексом 4

end;
end;

Begin
If Cmd.Name = 'Экскурсия' Then Begin // Действия 3
Chars.Speak('\Chr="Normal"\
\Ctx="Unknown"\\Spd=130\\Pit=88\Текст такой то ...','');
end;
end;

Begin
If Cmd.Name = 'Экскурсия' Then Begin // Действия 4
Chars.Play('GestureRight');
end;
end;

Begin
If Cmd.Name = 'Экскурсия' Then Begin // После окончания действия 4,
PageControl1.ActivePage:=TabSheet1; //происходит переключения на
//страницу PageControl с индексом 1
end;
end;

Мне нужно реализовать метод ожидания окончания действия 4 .
Помогите плиз, что то у меня не получается.
Автор: vserd
Дата сообщения: 04.10.2007 12:10
Chars.Play
это что?
Автор: mauar
Дата сообщения: 04.10.2007 13:42

Цитата:
Chars.Play
это что?

Это команда, виртуалному агенту.

Мне нужно для вот этого кусочка кода :

If Cmd.Name = 'Экскурсия' Then Begin
Chars.Play('GestureRight');
end;

надо описать команду ожидания её выполнения через функцию WaitForSingleObject.



Автор: vserd
Дата сообщения: 04.10.2007 13:45

Цитата:
Это команда, виртуалному агенту.

Экстрасенсы в отпуске.
Если есть Handle процесса/потока тогда можно, если нет, то нет.
Автор: mauar
Дата сообщения: 04.10.2007 14:09

Цитата:
Экстрасенсы в отпуске.
Если есть Handle процесса/потока тогда можно, если нет, то нет.


Допустим в разделе: " Var " прописываю переменную: PCTS1 : PagContTabSheet1;

между действиями переключения вкладки PageControl'a прописываю ожидания : WaitForSingleObject (PCTS1.hHandle,10000);
Далее:

finally
If Cmd.Name = 'Экскурсия' Then begin
PageControl1.ActivePage:= TabSheet4;
end;

Не работает
Как переменную PCTS1 прописать в предыдущей строке перед выполнением переключения вкладок?
Автор: kalkin
Дата сообщения: 04.10.2007 17:21
Подскажите как сделать авторизацию на http
вот с таким хедером:
===================================
GET /client/images/1.gif HTTP/1.0
Accept: */*
Referer: http://192.168.0.1/client/client.php
Accept-Language: ru
Cookie: какие-то куки
If-Modified-Since: Sat, 22 Nov 2006 19:18:01 GMT; length=43
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Host: 192.168.0.1
Authorization: Basic что-то=)
Connection: Keep-Alive
===============================

При этом приходиться постоянно через раз 6 иногда больше, править куки

Код:
========================================
idhttp1.Request.BasicAuthentication:=true;
idhttp1.Request.Username:='name';
idhttp1.Request.Password:='pass';
str:=de.Get('http://192.168.0.1/client/client.php');
да еще в свойствах Request в CustomHead указываю куки
без них авторизация не проходит...
========================================

Вопрос:
Как выполнить авторизацию не меняя руками постоянно куки?
Автор: vserd
Дата сообщения: 05.10.2007 08:40
mauar

Цитата:
PCTS1.hHandle

Это хендл окна, а не процесса.
Процесс у тебя выполняется в Chars.Play. Т.к. тип этого объекта (Chars) не известен, то разговор слепого с глухим о красоте заката я вести не буду.
Автор: mauar
Дата сообщения: 05.10.2007 12:33

Цитата:
Это хендл окна, а не процесса.
Процесс у тебя выполняется в Chars.Play. Т.к. тип этого объекта (Chars) не известен, то разговор слепого с глухим о красоте заката я вести не буду.


К форме подключен MS Agent Джин, Мерлин, Собачка, Скрепка и т.д. Может помнишь раньше автоматически с советами и диалогами вылазил
в MS Office 97 при загрузке ворда или экселя!?

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

Код private , кстати тут по моему тоже ошибка в прописывании комманды персонажа,
при прописывании комманды Chars компилятор выдает ошибку, я написал Char но вроде все работает нормально.

Код:
private
{ Private declarations }
Req: IAgentCtlRequest;{Будет хранить текущее действие персонажа}
Chars: IAgentCtlCharacterEx;{Хранит сам персонаж для обращения к нему}
Char: IAgentCtlCommandsEx; {Хранит комманды персонажа}
Автор: vserd
Дата сообщения: 05.10.2007 16:29
Попробуй так:
Chars.Wait(Chars.Play('GestureRight'));

Потом попробуй с Visible поиграться в цикле.
Автор: mauar
Дата сообщения: 05.10.2007 19:26

Цитата:
Попробуй так:
Chars.Wait(Chars.Play('GestureRight'));

Потом попробуй с Visible поиграться в цикле.

Так тоже пробовал.
С Visible ?! - как именно ?
Автор: vserd
Дата сообщения: 05.10.2007 20:34
while xxx.visible do sleep(300);

где xxx это некоторый объект из агента. С агентом не работал, так что только внешнее восприятие. Судя по гуглу еще есть State, тоже можно попробовать анализировать в цикле.
Автор: mauar
Дата сообщения: 05.10.2007 22:55

Цитата:
while xxx.visible do sleep(300);

где xxx это некоторый объект из агента. С агентом не работал, так что только внешнее восприятие. Судя по гуглу еще есть State, тоже можно попробовать анализировать в цикле.

Дружище благодарю, мне человек еще показал, но что то не работает,
вот код:

Код:
If Cmd.Name = 'Экскурсия' Then begin
req := Chars.MoveTo(400,550,1);
while (req.status = 4) or (req.status = 2) do
application.processmessages;

PageControl1.ActivePage:= TabSheet2;

Chars.Stop(Req); // он начинает выполнять это и все ниже следующие действия
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\что то сказал','');
Chars.Play('GestureRight');
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\опять что то сказал','');

//... и т.д. ...

req := Chars.Play('GestureRight');
while (req.status = 4) or (req.status = 2) do
application.processmessages;

PageControl1.ActivePage:= TabSheet4; // которая переключается в самом начале
end; // if cmd.name = 'Экскурсия'
Автор: Armag3000
Дата сообщения: 08.10.2007 08:33
Привет всем, подскажите как на Delphi запустить процесс и заставить его использовать более одного ядра процессора?
Автор: relictus
Дата сообщения: 08.10.2007 10:53
Оптимизация по времени выполнения. Посоветуйте быструю реализацию загрузки JPEG из потока в битмап. Что-то типа
Bmp := TIEBitmap.Create;
Jpeg := TFilestream.Create(JpegFN, fmOpenRead);;
Bmp.LoadFromJPEGStream(Jpeg);
.......
PS Без использования модуля Jpeg!
Автор: MrZeRo
Дата сообщения: 08.10.2007 16:59
Armag3000
Можно разным потокам указывать предпочитаемый процессор для выполнения:
SetThreadIdealProcessor.
Есть еще такое понятие, как Thread affinity - это механизм разрешения для процессов и потоков использовать те или иные процессоры, там функции SetProcessAffinityMask (для процесса), SetThreadAffinityMask (для потока).

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.