Вопрос № 103872: Уважаемые эксперты! Прошу помощи таком вопросе:
1. Как работать в Delphi6(7) с портом RS-485 (ОС Win98, 2000, XP)? Т.е. как опознать, открыть, послать через него сообщения (байты или блоки информации), принять информацию, закрыть.
2. Если е...Вопрос № 103889: Здраствуйте.
У меня есть файлы для разработки программы на языке С (*.h, *.lib, *.dll).
Как я могу использовать эти библиотеки для написания программы на языке Делфи?...Вопрос № 103907: Подскажите где можно скачать нормальную версию "Turbo Delphi",если не сложно и если есть свободное время?!...Вопрос № 103934: Всем привет!У меня есть следующий код поиска и выделения найденного в ListBox-е
private
FFoundText: string;
FFoundPos: TPoint;
function Search(Text: string; FromStart: boolean): boolean;
.....
function TCreateWorkForm....
Вопрос № 103.872
Уважаемые эксперты! Прошу помощи таком вопросе:
1. Как работать в Delphi6(7) с портом RS-485 (ОС Win98, 2000, XP)? Т.е. как опознать, открыть, послать через него сообщения (байты или блоки информации), принять информацию, закрыть.
2. Если есть переходник кабельный USB-RS-485, как тоже самое осуществить с помощью команд к USB-порту?
Есть функции для работы, есть спец. компоненты. И переходники тоже есть (http://www.chip-dip.ru/product0/9000035156.aspx). Вполне может быть что с переходником будет прилагаться драйвер, котрый обеспечит связь через 485 подмонтировав его как обычный COM.
Вобще работать с 485 можно как и с 232, но там возникают некотрые нюансы, требующие доработки в порядке передачи (считается что согласование на физ. уровне берет на себя микросхема). Вобще можно по этому вопросу глянуть книгу Агурова "Последовательные интерфейсы ПК", там есть отдельная глава.
Про работу вообще с COM можно глянуть тут http://delphikingdom.ru/asp/itemq.asp?Mode=1&ItemID=151
Это про интерфейс: http://www.mayak-bit.narod.ru/rs485.html
http://ru.wikipedia.org/wiki/RS-485
Это компонента
http://by32.pp.ru/Development/Components-Libraries/Windows_Std_Serial_Comm_Lib_for_Delphi-b14455.html
Тут в конце статьи куча ссылок на компоненты в том числе универсальные
http://disktrouble.narod.ru/rs232.html
--------- Нам много не надо, лишь власти над миром, и вкусненького что-нибудь (Slayers)
Ответ отправил: NiGHT (статус: Практикант)
Ответ отправлен: 01.10.2007, 12:42
Вопрос № 103.889
Здраствуйте.
У меня есть файлы для разработки программы на языке С (*.h, *.lib, *.dll).
Как я могу использовать эти библиотеки для написания программы на языке Делфи?
Отвечает: sir henry
Здравствуйте, Завьялов А.В.!
Файлы типа *.lib - никак. Это специфичный для Си файл, в котором написано откуда берутся те или иные функции.
Файлы типа *h - это текстовый файл объявлений функций, взятых из DLL (по всей видимости, раз DLL идёт в комплекте с программой), но без указания на то, из какой DLL берётся какая функция. Можно взять программу h2pas (например из дистрибутива FreePascal - http://www.freepascal.org, или найти с помощью Yandex/Google) ипереконвертировать файл *.h в файл *.pas. Сразу предупреждаю, что переконвертируется не всё, т.к. некоторым ключевым словам из Си нет прямых аналогов в Delphi. Далее Вам остаётся только вручную подставить
названия DLL-ки из которой взяты функции.
Далее всё как обычно, так как Вы привыкли программировать в Delphi, т.е. подставляете в строку USES название получившегося модуля *.pas и пользуетесь в своей программе объявленными там функциями.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 01.10.2007, 11:07
Вопрос № 103.907
Подскажите где можно скачать нормальную версию "Turbo Delphi",если не сложно и если есть свободное время?!
Ответил: Drbear (статус: 2-ой класс)
Дата отправки: 27.09.2007, 11:16
--------------------------------------------------------------------------------------------------------
--------- Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 10-ый класс)
Ответ отправлен: 01.10.2007, 13:41 Оценка за ответ: 4
Отвечает: Архангельский Андрей Германович
Здравствуйте, Медведев С.А.!
"Turbo Delphi", Так же как и "Turbo C" - бесплатные по определению.
Взять можно на сайте CodeGear.com - правоприемника Borland.
Версия Turbo не позволяет добавлять компоненты - следовательно для работы с БД придется использовать библиотеку DBExpress
При повышении уровня переустановка не требуется. Нужно заплатить денюжку и получить соответствующий рег. код.
Я получил копию Turbo Delphi на одном из бесплатных семинаров CodeGear - бесплатно
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Всем привет!У меня есть следующий код поиска и выделения найденного в ListBox-е
private
FFoundText: string;
FFoundPos: TPoint;
function Search(Text: string; FromStart: boolean): boolean;
.....
function TCreateWorkForm.Search(Text: string; FromStart: boolean): boolean;
function DoSearch(start: integer): TPoint;
var
i,n: integer;
begin
for i:=start to ListBox1.Items.Count-1 do begin
n:=pos(Text, ListBox1.Items[i]);
if n>0 then begin
result.Y:=i;
result.X:=n;
exit;
end;
end;
result:=point(-1,-1);
end;
var
p: TPoint;
begin
if FromStart then p:=DoSearch(0)
else p:=DoSearch(FFoundPos.Y+1);
result:=p.Y>-1;
if result then begin
FFoundText:=Text;
FFoundPos:=p;
ListBox1.Invalidate;
end;
end;
.......
//необходимо изменить свойство Style в TListBox на lbOwnerDrawFixed иначе событие OnDrawItem никогда не вызовется
procedure TCreateWorkForm.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
SelRect: TRect;
Cl: TColor;
begin
with ListBox1.Canvas do
begin
FillRect(Rect);
if FFoundPos.Y=Index then
begin
SelRect:=Rect;
SelRect.Left:=Canvas.TextWidth(copy(ListBox1.Items[Index], 1, FFoundPos.X-1));
SelRect.right:=SelRect.Left+Canvas.TextWidth(copy(ListBox1.Items[Index], FFoundPos.X, length(FFoundText)));
Cl:=Brush.Color;
Brush.Color:=clRed;
FillRect(SelRect);
Brush.Color:=Cl;
end;
Brush.Style:=bsClear;
DrawText(Handle, pchar(ListBox1.Items[Index]), -1, Rect, DT_SINGLELINE or DT_NOPREFIX or DT_VCENTER);
end;
end;
... ну не буду писать процедуру по которой Search вызывается,вопрос у меня в следующем ,как сделать так что бы в ListBox1DrawItem строка,в которой происходит выделение попадала в зону видимости,ну т.е чтобы в ListBox происходила прокрутка до нужной строки
Отправлен: 01.10.2007, 17:25
Вопрос задал: Gaz (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Ответ отправил: Drbear (статус: 2-ой класс)
Ответ отправлен: 01.10.2007, 18:22 Оценка за ответ: 3 Комментарий оценки: Ну во-первых ты имел ввиду наверное ListBox1.Perform(LB_SETTOPINDEX, Pred(ListBox1.Items.Count), 0);,во-вторых указал бы куда,в-третих ставлю после Brush.Color:=Cl;- не работает