Отправляет email-рассылки с помощью сервиса Sendsay

Delphi - проблемы и решения

  Все выпуски  

Проблемы и решения в Delphi #51


Служба Рассылок Subscribe.Ru

5851 подписчиков.

Проблемы и решения в Delphi - выпуск 51 от 14.03.2002.


А я всего лишь все на свете... для кого-то...


* В БАЗУ OFFLine * * ВСЕ ВОПРОСЫ * * СПРОСИТЬ * * ПРЕДЛОЖИТЬ * * АРХИВЫ * * СКОЛЬКО НАС *


Доброго Вам времени суток уважаемый читатель.



Ну что, вроде все нормализовалось и стабилизировалось в нашей базе. Смотрите обновления, скачивайте, сами чего шлите.


Как обычно в выпуске:

1. Очередные вопросы.
2. Отвеченные вопросы.
3. Наша база OFFLine взаимопомощи.


* В БАЗУ OFFLine * * ВСЕ ВОПРОСЫ * * СПРОСИТЬ * * ПРЕДЛОЖИТЬ * * АРХИВЫ * * СКОЛЬКО НАС *

1. Очередные вопросы.

Вопрос 726:
От: TEC

У меня вопрос по поводу упаковки таблиц.
Все делаю как написано в примерах:
T1.Exclusive:=true;
PackTable(T1);
А Оно говорит. что мол не могу работать при открытых данных.
Ну хорошо, делаю : T1.Active:=False;
А теперь ругается, что не могу работать на закрытых данных.
Где грабли?


Ответить.


Попробуй так:


Вопрос 727:
От: kto to

Проблема с ListBox'ом в delphi4.
Если в 4-ой дэльфе в непустом ListBox указать ItemIndex:=0, то эта
нулевая(первая строка)не выделяется. Этот глюк глючавит только если до этого в ListBox'e не
была
выбрана ни одна строка. В delphi3 усё типа-топ.
Это может и мелочи, но чтоб программно выделить нулевую строку,
приходится сначало проверить больше ли 1-го количество строк в ListBox'e и выделить не нулевую и
сразу потом нулевую строку.
А если в листбоксе будет всего одна строка.........((( .....
Чо за х....я???
И еще - если в ListBox'e не выделена ни одна строка то ItemIndex равен
0, а не минус 1.
Эти глюки присущи тока delphi4 (в пятой и шестой не проверял). Delphi3 -
лучшая версия!
Высокие версии дэльфов предназанчены для пользователей, а не для
программистов.
А то расслабились... скоро вобще голосом будете говорить компилятору -
"Состряпай мне крестики нолики" и кмопилятор скомпилит код в 4 Гб......


Ответить.


Попробуй так:


Вопрос 728:
От: Виталий Джангл

Помогите решить задачу с обращением к ячейкам памяти
системной области BIOS. Дело в том, что, например, под Windows 9x просмотреть
содержимое ячейки памяти с адресом $000F08C0 можно при помощи строки
str:=string(PChar(Ptr($000F08C0))); Однако такая "штука" не работает
на платформах класса NT. Существует способ организации доступа к DMI
информации, работающий под любыми платформами. Но как организовать
такой доступ? Вопрос действительно сложный!


Ответить.


Попробуй так:


Вопрос 729:
От: Vadim Pristavko

хочется узнать Owner'а файла из программы. Раздел NTFS... как? Я
пытался,
нашел пару API функций, да только так состыковать и не смог :(


Ответить.


Попробуй так:


Вопрос 730:
От: Vadim Pristavko

Имею соединение через ADO с MSSQL7
хранимая процедура возвращает 3 набора данных (Recordset'a), как их
получить и вывести в Мемо?
Как то Query Analayzer это делает, причем данные получает и медленно
выводит - по мере получения заполняет memo... И если в середине запроса
вышла ошибка (например деление на 0) он заканчивает,  выкидывает
значение
ошибки, а потом продолжает получать данные  из следующего RecordSet!


Ответить.


Попробуй так:


Вопрос 731:
От: Изотко Сергей

Как вырубить клаву и мышку, а потом аккуратно их включить.
Видел много процедур,
но мне нужна 100% рабочая. Может есть какой компонент для
такого рода действий.


Ответить.


Попробуй так:


Вопрос 732:
От: Anton

В Word есть в CoolBar кнопочка "Цвет шрифта", которая позволяет раз
выбрав цвет использовать его потом неоднократно для изменения
выделенного текста, не вызывая для этого всякий раз окно диалога цвета.
Вопрос: как организовать это в Дельфи (делаю свой редактор текстовый)?
пожалуйста поподробнее.


Ответить.


Попробуй так:


Вопрос 733:
От: от Виллера Александра

Меня интересует информация как пересылать информацию из приложения в
Word(в том числе и в таблицу),в Excel.


Ответить.


Попробуй так:
Есть неплохая компонента - ExelOut - можно переделывать под с <br> ебя исходники с комментариями!
Попробуй так:



* В БАЗУ OFFLine * * ВСЕ ВОПРОСЫ * * СПРОСИТЬ * * ПРЕДЛОЖИТЬ * * АРХИВЫ * * СКОЛЬКО НАС *

2. Отвеченные вопросы.

Вопрос 718:
От: Alfredo

как управлять DiaLUp подключением, вообще
и на стадии подключения в частности (например Отключить если надо,
узнать имя пользователя и т.д. и.т.п. ).
 


Ответить.

Попробуй так:


Вопрос 719:
От: BsLic

Есть DOS программа, которая требует от пользователя ввода
  каких либо данных, после этого выводит что-то на экран. Я хочу
  вводить в эту консоль и выводить из неё в TMemo (например).
  Пишу на Delphi оболочку под эту DOS программу. Перерыл всю хелпу,
  нашел кучу компонентов (DosCommand, MemoConsol, Console и т.д.),
  но всё глючит - то не работает под
  Win9x, то под WinMe, то под  Win2k(а надо чтобы работала везде).
  Знаю как делать : CreateProcess --> CreatePipe --> перехватываем
  стандартный вывод и ввод консоли --> WriteFile or ReadFile.
  Всё, типа до дикости просто, но работать (нормально работать) енто
  не хочет. А очень хотелось бы. Помогите чем могете: исходнички,
  советы, ссылки.


Ответить.

Попробуй так:
Как я понял Ваша консольная прога должна запускаться под винд
ой. Если так, то просто воспользуйтесь буфером обмена. Попробуй так:
Могу предложить выход немного через левое ухо, но 100% рабочий. Повесь ловушку на клавиатуру, при срабатывании проверяй заголовок окна (id процесса, и что угодно), потом разбирай в своей программе, что там должно в Memo записаться. Или просто делай PostMessage своей Меме с отловленными скан- и вк-кодами. Попробуй так:


Вопрос 720:
От: BsLic

пишу графический редактор(типа AutoCad, но со
специфическими возможностями) и появилась необходимость быстрой
прорисовки. Например, пользователь выбирает несколько объектов (пока
только линии) и перетаскивает их, в процессе перетаскивания они
перерисовываются на экране. Перерисовываю просто - беру кординаты
перетаскиваемых линий и поочередно каждую линию стираю на старом месте
и рисую на новом. Рисование через canvas очень медленно, т.е. когда
перетаскиваемых линий предположим 5, то мерцания не заметно. Когда же
линий уже больше, все это начинает сильно мерцать. Недавно решил на
рисовать линии один раз на внеэкранном растре, а затем просто копировать
со смещение в canvas функцией BitBlt, все вроде работает быстрее,
но появилась новая идея и появилась новая проблемма. Вопрос как мне
быстро рисовать изменяющиеся фигуры(линии).
Например даны 20 точек из каждой в текущую позицию курсора рисуется
линия, т.е. 20 линий и все они рисуются за курсором (а так как старые
линии должны тожа стираться, то приходится рисовать 40 линий) при этом
все мерцает. Как с этим бороться?


Ответить.

Попробуй так:
Рисовать на внеэкранной области изменяющие фигуры, а перед пр
орисовкой просто очищать эту область. после прорисовки использовать BitBlt и на канвас это всё хозяйтво. Это пока лучший способ. На Bitmaр-е в памяти прорисовывается быстрее. Попробуй так:
Вместо того чтобы затирать все "старые" линии, просто рисуй залитый прямоугольник на всю область вывода. Но ты пишешь что делаешь нечто вроде AutoCad'a, то у тебя вскоре появится проблема отрисовки плоскостей и поверхностей (и наверняка закочется чтобы это был не каркас, а твердотельная модель), то я советую применить тебе OpenGL, а не стандартные средства рисования (тем более что сразу отпадёт твоя проблема быстрой перерисовки). Попробуй так:
Я делал таким образом: создавал два объекта типа TBitmap в которые заносил фоновое изображение выполнял рисование на первом битмэпе и копировал на экран затем копировал второй в первый и снова на нем. В вашем случае, возможно быстрее будет не рисовать каждый раз линии а создать два спрайта и копировать их с операциями "and" и "or" могу намылить главу из книги с подробным описанием. И, наконец, можно воспользоваться компонентой DelphiX, использующей DirectX Попробуй так:


Вопрос 721:
От: Shamashov

Подскажите как програмно можно выделить
в richedit текст?
Причем надо сделать так,чтобы выделено было
заданное количество символов.


Ответить.

Попробуй так:
SelStart,SelText, а также EM_SETSEL Попробуй так:
with Mem
o1 do begin SelStart:=5; SelLength:=10; HideSelection:=false; end; Кроме того, выделенный текст хранится в SelText. HideSelection рулит видимостью выделения (а так оно существует, пока не сбросить) Попробуй так:
...все очень просто: Self.RichEdit1.SelStart := Start; Self.RichEdit1.SelLength := Length; Попробуй так:


Вопрос 722:
От: Dabadabiabo

 
При использовании SQL в каталоге программы
создаются временные файлы БД.
Как программно задать путь для создания этих файлов
в другой папке, например, Windows\Temp\


Ответить.

Попробуй так:
Session.PrivateDir := 'C:\windows\temp'; Попробуй так:


Вопрос 723:
От: Соколов

Как с помощью Delphi произвести
копирование папки?


Ответить.

Попробуй так:
uses ShellApi; procedure TForm1.Button1Clic
k(Sender: TObject); var OpStruc: TSHFileOpStruct; frombuf, tobuf: array [0..128] of Char; begin FillChar( frombuf, Sizeof(frombuf), 0 ); FillChar( tobuf, Sizeof(tobuf), 0 ); StrPCopy( frombuf, 'h:\hook\*.*' ); StrPCopy( tobuf, 'd:\temp\brief' ); with OpStruc do begin Wnd:= Handle; wFunc:= FO_COPY; pFrom:= @frombuf; pTo:=@tobuf; fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; fAnyOperationsAborted:= False; hNameMappings:= Nil; lpszProgressTitle:= Nil; end; ShFileOperation( OpStruc ); end; Попробуй так:
Установи библиотеку RxLib - unit FileUtil, процедура CopyFile. Попробуй так:


Вопрос 724:
От: Alex Zhuravlev

Кто знает, как печатать на матричном принтере на бесконечной бумаге,
когда длина заранее не известна -
как я понимаю, надо что-то типа EndDoc без прокручивания страницы или
что-то умнее?


Ответить.

Попробуй так:
Да нет, просто можешь посылать текст на устройство prn (Assig
nPrn(Var F:TextFile)), в таком случае он будет печататься бесконечно пока не кончится, потому что для перевода страницы нужно посылать особый символ. Попробуй так:


Вопрос 725:
От: Oleg Supronenko

Подскажите где найти компонент ADS для работы с таблицами без BDE для
Delphi 5.


Ответить.

Попробуй так:
На сайте разработчика. Компонент бесплатный - платить надо то
лько за сервер. http://www.advantagedatabase.com/ADS/default.htm Попробуй так:



* В БАЗУ OFFLine * * ВСЕ ВОПРОСЫ * * СПРОСИТЬ * * ПРЕДЛОЖИТЬ * * АРХИВЫ * * СКОЛЬКО НАС *



3. Наша база OFFLine взаимопомощи.
Что на сегодня у нас имеется :
Документы Компоненты Программы Проекты
1. От Валентина Озерова
2. 32 Урока По Делфи4(текст)
3. Непрямоугольные формы
4. CGI на Делфи
5. Справочник по Делфи5
6. От Олега Малышева
7. Перекодировки
8. WinApi
9. От Алексея Малинина
10. 32 Урока По Делфи4(рисунки)
11. МИДАС

1. Выполнение Матем Выражений
2. Управление DOS окнами
3. Rx6_Lib
4. Rx6_Help(rus)
5. Delphi_X
6. Delphi_X_Help(eng)
7. TTable в памяти(без BDE)
8. Банк Клиент


1. Текст под Углом
2. Управляем WinAmp
3. Печать Графики
4. Заменить Строки

Если Вам есть что послать в базу OFFLine то просто в теме письма укажите 'baseoffl' приложите аттач и отправьте письмо. В связи с ограничением размера письма не делайте аттачи более 1500кб.
А ты уже поделился с товарищами чем-нибудь интересным?
Если хотите что-то заказать то пошлите по почте этот запрос , а после двоеточия поставьте две цифры разделенныe запятой, например : ':2,1' - это значит, что вы хотите заказать из второй колонки(Компоненты) первый элемент.
Есть небольшое ограничение - в одном письме можно запросить только что-то одно (обрабатывается только первая строка тела письма)!

Помните! Структура каталогов поддерживается только до очередного выпуска рассылки! Поэтому при запросе всегда берите данные из последнего выпуска!

Если Вы хотите как можно скорее получить ответ на свой вопрос, то
укажите в теме письма - delphiV,иначе письмо будет прочитано значительно
позже, если же у вас есть предложения то в теме письма укажите delphiP.

Для интересующихся - немного о себе. Работаю на
железнодорожном транспорте ведущим программистом.
Основные мои разработки - это сбор и доставка клиентам
информации о вагонах и поездах: где находится(по России),
куда едет. В связи с этим программировал для e-mail,Socket,БД,ISAPI.

За сим прощаюсь - скорых Вам и качественных программ.

Автор рассылки - Дмитрий.
ICQ - 89533941.

* В БАЗУ OFFLine * * ВСЕ ВОПРОСЫ * * СПРОСИТЬ * * ПРЕДЛОЖИТЬ * * АРХИВЫ * * СКОЛЬКО НАС *



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное