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

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 290
от 16.02.2004, 03:00

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1338
Отправлено ответов: 2934
Активность: 219.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

THE_PRO
Статус: Профессиональный
Общий рейтинг: 140.48
URL: THE_PRO
Телефон: (994 +12) 989647
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 160.11
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 152.91
URL: Программирование на Паскале
[Подробней >>]
 
Pawel
Статус: Опытный
Общий рейтинг: 164.04
[Подробней >>]
samum2000
Статус: Опытный
Общий рейтинг: 123.51
[Подробней >>]
CJ
Статус: Опытный
Общий рейтинг: 121.86
URL: Мой персональный сайт! Зайдите и не пожалеете!
[Подробней >>]
 
Trubler
Статус: Доверительный
Общий рейтинг: 104.31
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1326. Здравствуйте. Опять вопрос по БД (блин, как надоели БД, то ли дело - системное программирование, ник... (ответов: 2)
Вопрос № 1327. >>1. А Вы не ошиблись? :)) >>IBQuery.FindFirst; >>IBQuery.FindNext; Нет я не ошибся - попробуйте сам... (ответов: 2)
Вопрос № 1328. Здравствуйте Эксперты. Кто что знает про TMetaFile и TMetaFilePicture? Поделитесь знаниями, пожалуйс... (ответов: 3)
Вопрос № 1329. Спасибо за ответ на вопрос 1320! Хочу уточнить одну вещь: понятно, что и try...except и if then испо... (ответов: 1)
Вопрос № 1330. Уважаемые эксперты, спасибо за последний ответ Sir Henry, признаю, что в войне принципов я по больше... (ответов: 1)
Вопрос № 1331. Здравствуйте эксперты!!! Как мне в PopUp menu можно сделать разделитель??? можно просто дать имя: &q... (ответов: 2)
Вопрос № 1332. Занялся недавно изучением Delphi 7 (буквально 2 дня назад), и естественно появились проблемы, а зак... (ответов: 5)

Вопросов: 7, ответов: 16


 Вопрос № 1326

Здравствуйте.
Опять вопрос по БД (блин, как надоели БД, то ли дело - системное программирование, никогда не надоедает....).
В Interbase6 нет типа BOOLEAN. Как замутить что-нибудь заместо этого (желательно пример) и чтобы с этим нормально работали Checkbox-компоненты, такие как станд. DBCheckBox, DBCheckBoxEh из EHLIB и остальные?



Вопрос отправлен: 11.02.2004, 08:17
Отправитель: Marouder (marouder@list.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Добрый день, Marouder!
Tip varchar(2) kotoriy prinimayet i pokazivayet 2 tipa strok
(napr. 'y' i 'n') zadaniye v svoystvay DBCheckBox

Ответ отправлен: 11.02.2004, 16:27
Отправитель: THE_PRO


Отвечает sir henry

Добрый день, Marouder!
Можно пользоваться 0 и 1. Будет соответственно False и True.

Ответ отправлен: 11.02.2004, 09:11
Отправитель: sir henry


 Вопрос № 1327

>>1. А Вы не ошиблись? :))
>>IBQuery.FindFirst;
>>IBQuery.FindNext;
Нет я не ошибся - попробуйте сами : это не работает на IBquery, а в query - работает
------
>>Я бы Вам посоветовал приобрести книжку по созданию и >>использованию БД в Дельфи, например Фаронов
>>"Дельфи. Руководство разработчика баз данных". Поверьте, >>это будет куда полезнее, чем посылать вопросы
>>типа "Я не знаю как работать с IB пришлите свои >>комментарии" :)).
Ну поскольку вы назвались "Экспертом", то и отвечать вам нужно более подробно, а не отнекиваться типа : купи книжку,
так и я могу. Я не прошу рассказать мне теорию Дельфи в картинках, конкретный вопрос требует конретного ответа, а не можете ответить по существу - лучше не отвечайте вовсе. А так мы все умные.



Вопрос отправлен: 11.02.2004, 11:26
Отправитель: jiny (zhas-trz@tarazinfo.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Добрый день, jiny!
Slushay, kto tebe skazal pro FindFirst... blinnn...
Pishish v IBQuery.SQL:TStrings zapros, potom IBQuery.Open
I VSE...


Ответ отправлен: 11.02.2004, 16:26
Отправитель: THE_PRO


Отвечает sir henry

Приветствую Вас, jiny!
:))
Без, почему-то, нелюбимой Вами теории не обойтись :). Я бы, честно говоря и картинки привел, но Вы запретили :)).
Я немножко покопался в исходниках и на сайте фирмы Борланд и выяснилось, что методы TIBQuery, типа FindFirst и FindNext они и не собирались реализовывать. У объекта-предка они есть (виртуальные), но для IBQuery (и вообще для любого набора данных IB) они просто ничего не делают.
Давайте подойдем к этому со стороны теории. Что такое Query? Это данные, выбраные по определенному признаку. А если дополнительно ввести к уже полученному набору еще один признак? У SELECT есть специальные функции MIN() и MAX(), которые и помогут нам в этом деле. По крайней мере FindFirst и FindLast с помощью них можно реализовать. У каждой таблицы по каждому значащему полю у Вас есть индексы (я надеюсь :), следовательно, добавив к оператору SELECT сортировку ORDER BY, Вы получаете набор данных в которой первая запись это минимальное значение по выбранному Вами критерию сортировки (функция MIX()), а максимальное значение будет последней записью (функция MAX()).
Теперь представим такую ситуацию. Вы получили набор данных с определенными свойствами и Вам надо вести обработку каждой полученой записи по отдельности. В этом случае можно не городя огород воспользоваться старыми добрыми методами First, Last, Next и Prior. Для IBQuery они работают :)).
Как видите, Ваше более чем пренебрежительное отношение к теории и особенно к книгам Вас подвело. В любой книге об этом написано едва ли не на первом месте :)).

Ответ отправлен: 12.02.2004, 07:48
Отправитель: sir henry


 Вопрос № 1328

Здравствуйте Эксперты.
Кто что знает про TMetaFile и TMetaFilePicture? Поделитесь знаниями, пожалуйста!
Может кто советом поможет: Существуют некие файлы - специфические файлы рисунков. Сам файл - это координаты точек (х,у), которые должны быть соединены линиями. Линии могут пересекаться, ложится друг на друга... Рисунок получается при прорисовке всех линий от точки к точке. Часто рисунок разделен на несколько частей. Цвета частей могут быть одинаковыми...
Посоветуйте, как лучше реализовать работу с таким рисунком? А именно - как организовать быструю смену цвета отдельной части? т.е. я кликаю мышкой по кусочку, программа должна определить что это за кусочек и задать для него новый цвет. (для удобства отдельные куски разложены по отдельным массивам.) Перебирать все эл-ты в поисках нужной точки - мне кажется это слишком не рациональный подход. Тем более, по закону подлости, мышка может попасть аккурат между двумя линиями одной части... Но как-то ведь люди это делают. Может несколько TImage накладывать друг на друга, устанавливать прозрачность в true...
Чтобы было совсем понятно - файлы рисунков - это файлы вышивки. Координаты (х,у) - место укола иглы.
Жду Ваших советов, рекомендаций, идей.



Вопрос отправлен: 11.02.2004, 13:45
Отправитель: Vitally

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, Vitally!
Что-то конкретное посоветовать сложно, однако несомненно то, что это должен быть не рисунок, а файл описания объектов (т.е. линия, окружность, квадрат и т.п.). Когда файл грузиться с диска, создаются объекты и размещаются на какой-то поверхности. Естественно, в состав объектов должны входить их координаты (и уровень слоя, если они лежат друг на друге :) тогда, при щелчке мышью, если совпали координаты мыши и объекта, объект выделяется, становиться текущим и с ним производятся разные манипуляции.
После всех необходимых обработок объекта, файл можно записать в виде рисунка, например перерисовать его на TImage с помощью стандартных операторов LineTo, Rectangle и т.д..

Ответ отправлен: 11.02.2004, 15:40
Отправитель: sir henry


Отвечает Boriss

Здравствуйте, Vitally!
1) Мышка между линиями - до определить область захвата и проверять точка + окрестность (хотя бы квадрат)
2) Проверять придется - тут уж никак :((, а для ускорения разве что сортировать, а лучше индексировать массивы периодически - по максимальным и минимальным координтатам отрезков. Так чтоб сразу определить, стоит ли проверять данный отрезок или нет. Иначе придется рассчитывать расстояние до линии. Хотя тут возможны упрощения "правильных" формул до оценочных - не искользующих квадратов, например


Приложение:

Ответ отправлен: 11.02.2004, 15:16
Отправитель: Boriss


Отвечает Pawel

Добрый день, Vitally!
Нужно работать послойно, с использованием массива.(или нескольких).
Но вообщето задача серьёзная и ресурсоёмкая.

Ответ отправлен: 12.02.2004, 14:15
Отправитель: Pawel


 Вопрос № 1329

Спасибо за ответ на вопрос 1320!
Хочу уточнить одну вещь: понятно, что и try...except и if then использовать надо. Я хотел узнать, что лучше или выгоднее или правельннее использовать там, где две эти вещи могут взаимозаменить одна другую. Например деление на ноль - можно просто вставить код деления в блок try...except, а можно не доводить до исключительной ситуации, а проверять значение делителя: if делитель <>0 then делим.
Так вот, что выгоднее, полезнее. (не скажу разумнее, потому что ИМХО разумнее все-таки не доводить программу до исключительных ситуаций). :)



Вопрос отправлен: 11.02.2004, 14:31
Отправитель: Vitally

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Здравствуйте, Vitally!
По-моему, в данном конкретном случае - без разницы, тут уж кому как нравится. Хотя, вроде бы, If экономичнее... Но согласись, что далеко не всегда есть возможность предугать возникновение исключительной ситуации, а бывают ситуации, что спасти может только try..except.

Ответ отправлен: 13.02.2004, 11:59
Отправитель: samum2000


 Вопрос № 1330

Уважаемые эксперты,
спасибо за последний ответ Sir Henry, признаю, что в войне принципов я по большей части был неправ.
Следующий вопрос :
Почему функция UPPER, внутри SELECT upper(name) from orgs
Кириллические символы выдает также, без изменений, а с английскими все работает ?
Диалект базы : 1, набор символов Win1251



Вопрос отправлен: 12.02.2004, 13:21
Отправитель: jiny

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Доброе время суток, jiny!
Не могу Вам достоверно сказать, что это такое, но у Борланда всегда были проблемы с национальными кодировками. Дельфи не стал исключением. Если бы не было аналогичных функций WinAPI (или, ранее, досовских прерываний), то не знаю, что и делать. Самому только эти функции писать :)).
У меня вместо InterBase стоит FireBird 1.5. В нем такой проблемы нет (вдобавок полнофункциональный и бесплатный сервер :). Т.е., если создать базу данных:
CREATE DATABASE my_gdb.gdb DEFAULT CHARACTER SET WIN1251;
То и русские и английские символы обрабатываются одинаково успешно.

Ответ отправлен: 14.02.2004, 10:38
Отправитель: sir henry


 Вопрос № 1331

Здравствуйте эксперты!!!
Как мне в PopUp menu можно сделать разделитель???
можно просто дать имя: "-" но мне надо что бы разделитель был с надписью, например:
Menu1
--Separator--
Menu2
Menu3


Приложение:


Вопрос отправлен: 12.02.2004, 17:04
Отправитель: snake

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Добрый день, snake!


Ответ отправлен: 12.02.2004, 17:31
Отправитель: Boriss


Отвечает CJ

Доброе время суток, snake!
Так и напиши --Separator--

Ответ отправлен: 14.02.2004, 21:56
Отправитель: CJ


 Вопрос № 1332

Занялся недавно изучением Delphi 7 (буквально 2 дня назад), и
естественно появились проблемы, а заключаются они в следующем:
В приложении представлена процедура обработки нажатия на клавишу "="
моего калькулятора, я думаю обработка ошибок сдесь должна работать,
но при неправильном вводе числа вылазит окно с ругательством, после
"согласия" с тем что написано в окне, программа продолжает работу, как
ни в чем ни бывало, даже не думая выполнять действия прописанные в
блоке except..end. Заранее благодарен за помошь.


Приложение:


Вопрос отправлен: 12.02.2004, 17:20
Отправитель: Pavel (shtaket@udmnet.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, Pavel!
1. Попробуйте запустить программу не в IDE, а отдельно и посмотреть, что будет :). Видимо у Вас IDE перехватывает ошибки.
2. Вполне возможно, что Ваша ошибка не EConvertError, попробуйте закомментировать.
3. Неплохо было бы привести текст ругательства в окне :).

Ответ отправлен: 13.02.2004, 11:02
Отправитель: sir henry


Отвечает Boriss

Доброе время суток, Pavel!
Написано излишне сложно, и не ясно "согласия" с чем?
Вот как проще (а чем проще, тем меньше ошибок :)) ):
1) Эта процедура не должна содержать никаких циклов,
2) при возникновении ошибки - выдается информация и передается фокус в окно ввода, содержащего ошибку
3) И последнее, следует писать: UNTIL NOT error; Это же булевская переменная, зачем ее использовать еще в одном логическом выражении?


Ответ отправлен: 12.02.2004, 18:31
Отправитель: Boriss


Отвечает Pawel

Добрый день, Pavel!
Чересчур накрученный код.
Try и except должны быть за пределами цикла.
Проше будет установаит глобальный обработчик.
компонент ApplicationEvents
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
end;

Ответ отправлен: 12.02.2004, 18:53
Отправитель: Pawel


Отвечает Trubler

Доброе время суток, Pavel!
Можно убрать из текста программы EConvertError, тогда все будет выполняться.


Приложение:

Ответ отправлен: 12.02.2004, 21:18
Отправитель: Trubler


Отвечает samum2000

Добрый день, Pavel!
Странно, но у меня программа работает корректно. Единственная, на мой взгляд, ошибка это то, что при неправильном вводе числа (например, если я запишу текст) программа зацикливается: при ошибке Error устанавливается в true, и цикл repeat начинает очередное повторение, но ведь содержимое в edtab теперь точно неправильное - 'Ошибка ввода, повторите ввод' - и все начинается заново, а пользователь уже никогда не сможет изменить то, что там написано. Придется немного изменить структуру программы, но это уже другой вопрос. Однако, блок except..end честно выполняется программой.

Ответ отправлен: 14.02.2004, 08:42
Отправитель: samum2000



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (14)
Perl (3)
Builder / Delphi (19)
Pascal (20)
Basic / VBA (9)
Java / JavaScript (3)
PHP (13)
Криптография (5)
WinAPI (11)
Радиоэлектроника (7)
Пользователю
Windows 95/98/Me (40)
Windows NT/2000/XP (54)
"Железо" (35)
Поиск информации (15)
Администратору
Windows NT/2000/XP (29)
Linux / Unix (9)
Юристу
Гражданское право (15)
Семейное право (10)
Трудовое право (12)
КоАП (10)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

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

В избранное