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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 528
от 10.07.2006, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 360, Экспертов: 62
В номере:Вопросов: 8, Ответов: 19


Вопрос № 48159: Здравствуйте уважаемые эксперты. Я пробовал учился программировать в делфи делая простые примеры из книги. В итоге столкнулся с ошибками в книги и не знаю что делать. При компиляции выходит сообщение об ошибке, перевод ошибки на русский...
Вопрос № 48191: Здравствуйте, уважаемые эксперты! Подскажите, пжалуйста, как из моего приложения запустить другое? И можно ли выбирать, показывать или нет форму второго приложения? Заранее благодарен!...
Вопрос № 48193: Здравствуйте уважаемые эксперты. Учась прагроммировать на делфи, пака не получается найти ошибки в программе. Подскажите где ошибка. Подозреваю что в книга с опечатками(Михаил Фленов Программирование в Delphi глазами хакера) [Ошибка]Unit1...
Вопрос № 48198: Hi All!!! Ребята! Сегодня купил диск с Дельфи 9 и начал его устанавливать на ХР SP1 Смысл установки: Сначала все распаковывается во временный каталог, а затем из него запускается setup.exe... Так вот, после его запуска,инсталятор ...
Вопрос № 48199: Добрый день! Есть такая проблема (возможно старая как мир, но решить ее мне надо): При работе в программах с дробными десятичными числами возникает проблема с разделитетелем целой и дробной части. Дело в том, что в разных компьютера...
Вопрос № 48208: Здравствуйте уважаемые Эксперты! Как осуществить вращение на 90 градусов по/против частовой стрелки изображения, загруженного в Image?...
Вопрос № 48238: Здравствуйте, уважаемые эксперты! Что нужно сделать, чтобы в Tlabel.caption, Tedit.text можно было писать греческими буквами? Я скопировал из Word-а Пи и вставил в Edit.text, но вместо пи получил ?, и вместо дельта получил ?. Спасибо. ...
Вопрос № 48239: Здравствуйте, уважаемые эксперты! Подскажите, пожалуйста, как узнать количество дней между текущей датой и любой другой? Заранее благодарен!...

Вопрос № 48.159
Здравствуйте уважаемые эксперты.
Я пробовал учился программировать в делфи делая простые примеры из книги. В итоге столкнулся с ошибками в книги и не знаю что делать.

При компиляции выходит сообщение об ошибке, перевод ошибки на русский, как правило не проявляет проблемы.
Есть ли книги с описание основных ошибок.
Как вы решаете проблемы с ошибками.
Спасибо.
Отправлен: 04.07.2006, 22:21
Вопрос задал: Gava (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: METALLDOCTOR
Здравствуйте, Gava!

Без конкретного мсходника или отчёта об ошибке можно сказать только одно: RTFM, то бишь читай спроавку. В Делфях есть несколько вариантов ошибок - это Worning, Error и т.п., почти всегда спасает двойной клик на ошибку(Error) в репорте снизу и нажатие на F1, откроется справка, в которой хоть и по английски, но описанна ошибка и, как правило, приведены ошибочные и исправленные коды.

P. S. Если вы списывали код с книги, то почти наверняка проблема в неправильном наборе, ещё раз внимательно перечитайте исходники, проверьте наличие всевозможных точек с запятоыми и т.п. Пожалуй, иногда имеет смысл исходники не перепечатывать, а копировать с учебников, во множестве имеющихся в интернете.
---------
Ни о чём не жалею!
Ответ отправил: METALLDOCTOR (статус: 3-ий класс)
Ответ отправлен: 04.07.2006, 22:54
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Gava!
1. Без созерцания текста ошибки, невозможно понять в чем ее суть. :)
Дельфи выдает достаточно информативное сообщение об ошибке. Ваша главная проблема в том, что Вы ленитесь учить английский язык.
Если ошибка носит синтаксический характер, то она совершенно понятна и исправляется тут-же на месте. Если же ошибка логическая, то здесь Вам поможет только опыт программирования - свой или чужой.
2. Книг с описанием ошибок нет и никогда не было, т.к. каждая система программирования использует свой собственный способ их предьявлять. Однако интернет буквально забит описаниями всевозможных ошибок программирования, так что если Вы скопируете текст ошибки и вставите его в поисковик, то получите громадное количество пояснений и способов, как эту ошибку исправить.
3. Проблемы с ошибками мы решаем аналогично. Синтаксические исправляем сразу, логические обдумываем и меняем код там где нужно. И, конечно, без знания английского не обойтись ни как. Это один из самых необходимых программисту пунктов.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 05.07.2006, 06:12
Оценка за ответ: 5


Вопрос № 48.191
Здравствуйте, уважаемые эксперты! Подскажите, пжалуйста, как из моего приложения запустить другое? И можно ли выбирать, показывать или нет форму второго приложения? Заранее благодарен!
Отправлен: 05.07.2006, 07:27
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: aaqs
Здравствуйте, Андрющенко Вячеслав Васильевич!
в uses добавляется ShellAPI
запуск: ShellExecute (0,'open','имя_программы_или_файла',null,null,SW_SHOWNORMAL)
а для скрытого запуска все тоже самое, только SW_SHOWNORMAL заменить на SW_HIDE
Ответ отправил: aaqs (статус: 5-ый класс)
Ответ отправлен: 05.07.2006, 09:13
Оценка за ответ: 5
Комментарий оценки:
Как раз то, что надо!

Отвечает: Coven
Здравствуйте, Андрющенко Вячеслав Васильевич!
uses ShellAPI;
ShellExecute(0,'open', PChar(AppPath+'pto.hlp'), nil,nil,SW_SHOW)
запускает любой документ, картинку, и т.д.
Ответ отправил: Coven (статус: 1-ый класс)
Ответ отправлен: 05.07.2006, 09:18
Оценка за ответ: 5


Вопрос № 48.193
Здравствуйте уважаемые эксперты.
Учась прагроммировать на делфи, пака не получается найти ошибки в программе.
Подскажите где ошибка. Подозреваю что в книга с опечатками(Михаил Фленов Программирование в Delphi глазами хакера)
[Ошибка]Unit1.pas(9):Undeclared identifier:’TForm’
[Ошибка]Unit1.pas(44): Undeclared identifier:’TCloseAction’
[Ошибка]Unit1.pas(44):Declaration of ‘FormDestroy’ differe from previous declaration
[Ошибка]Unit1.pas(46):Undeclared identifier:’ServerSocket1’
[Ошибка]Unit1.pas(46):Missing operator or semicolon
[Фатальная ошибка] Internat32.dpr(5):Could not compile used unit ‘Unit1.pas’
Спасибо.

Приложение:

Отправлен: 05.07.2006, 08:04
Вопрос задал: Gava (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгения
Здравствуйте, Gava!

unit Unit4;

interface

uses {!!!!!!!!модуль отсутствовал Forms} Forms, registry, Windows, Messages, Classes, ScktComp;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject; var Action: TCloseAction);
{!!!!!!!var Action: TCloseAction - отсутствовало - они должны повторять описание}
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

оно и дальше не работает - но вот этого списка ошибок оно не выдает!
Счастливо!
---------
Я не волшебник, я только учусь... А разве кто-то обещал, что будет легко?
Ответ отправила: Евгения (статус: 7-ой класс)
Ответ отправлен: 05.07.2006, 08:23
Оценка за ответ: 5
Комментарий оценки:
Спасибо.
Чувствую не научусь я программировать в делфи ………за неделю.

Отвечает: sir henry
Здравствуйте, Gava!
Вот для примера:
[Ошибка]Unit1.pas(9) - цифра 9, это в какой строке произошла ошибка.
Undeclared identifier:’TForm’ - неизвестный идентификатор TForm. Либо объявляйте этот тип самостоятельно, либо в строке USES напишите название того модуля, где он уже объявлен. Поскольку TForm - это объявление формы, то Вам подойдет второе. Ставите курсор на TForm, нажимаете F1 и смотрите в хелпе, в каком модуле это тип объявлен, после чего заносите его в USES.
Аналогично с остальными.
Declaration of ‘FormDestroy’ differe from previous declaration - Метод FormDestroy должен быть предварительно объявлен. Та же ситуация - нужен модуль.
Missing operator or semicolon - неправильный оператор или разделитель между операторами. Встаете на указанаю строку и смотрите, что там у Вас не в порядке.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 05.07.2006, 10:58
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Вопрос № 48.198
Hi All!!!
Ребята!
Сегодня купил диск с Дельфи 9 и начал его устанавливать на ХР SP1
Смысл установки:
Сначала все распаковывается во временный каталог, а затем из него запускается setup.exe...
Так вот, после его запуска,инсталятор пишет( как я понял?), что в системе не установлена надстройка DotNet!
Далее...
Я нашел эту надстройку, но проблема не решилась.
Если Вам не трудно, обьясните в чем дело.
Большое спасибо!
Отправлен: 05.07.2006, 09:01
Вопрос задал: Герасименко Алексей Анатольевич/Geer (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Герасименко Алексей Анатольевич/Geer!

Для установки Delphi 9 нужно предварительно установить:
.NET 1.1 Framework Redistributable
.NET 1.1 SDK
.NET J#
Internet Explorer 6 SP 1

Обычно все это идет вместе с инсталляцией Delphi, но если нет, то
1. Найти все это на сайте Microsoft
2. Скачать с сайта Borland (Для этого надо регистрироваться) - там есть прямые ссылки на то, что нужно к триальной версии, но полная требует того же
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 10:34


Вопрос № 48.199
Добрый день!

Есть такая проблема (возможно старая как мир, но решить ее мне надо):

При работе в программах с дробными десятичными числами возникает проблема с разделитетелем целой и дробной части. Дело в том, что в разных компьютерах в настройках Windows качестве разделитетля используется иногда точка, иногда запятая, и при вводе дробных чисел в текстовые поля может возникнуть проблемы с восприятием числа (например, при программировании используется точка, а в Windows принята по умолчанию запятая). Получается, что мое число не воспринимается как число.
Как сделать так, чтобы при вводе десятичных дробных чисел в качестве разделителя целой и дробной части использовался разделитель принятый в Windows на данной машине. Нужно сделать какой-то перехват, чтобы независимо от того что вводит пользователь, в поле вводился тот разделитель, который установлен в Windows. В Visual Basic вроде бы есть такая функция, которая определяет разделитель принятый в Windows, а вот есть ли она в Delphi?
Или может у кого-нибудь есть еще какой вариант решения этой проблемы?

Заранее спасибо.
Отправлен: 05.07.2006, 09:08
Вопрос задал: Igrik (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, Igrik!
Сущевствует глобальная переменная DecimalSeparator, которая соответствует системному разделителю дробной и десятичной части числа.
Например:
if (Key=DecimalSeparator) and (Pos(DecimalSeparator, Summ.Text)<>0)
then Key:=#0;
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 6-ой класс)
Ответ отправлен: 05.07.2006, 09:20

Отвечает: IUnknown
Здравствуйте, Igrik!
думаю вам перехватывать ничего не надо... а просто смотреть ключ реестра
HCUControl PanelInternational

параметр ... sDecimal
Ответ отправил: IUnknown (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 09:33

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Igrik!

Я обычно на поле ввода стаблю обработчик на OnKeyPress такого вида

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
if key in [',', '.'] then
key := DecimalSeparator;
end;

Ответ отправил: Лукьяненко Алексей Валериевич (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 10:39


Вопрос № 48.208
Здравствуйте уважаемые Эксперты!
Как осуществить вращение на 90 градусов по/против частовой стрелки изображения, загруженного в Image?

Приложение:

Отправлен: 05.07.2006, 10:30
Вопрос задал: Дмитрий Александрович (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: aaqs
Здравствуйте, Дмитрий Александрович!
нашел в одном из faq'ов (см прил.). Использование: в параметры процедуры передается TImage

Приложение:

Ответ отправил: aaqs (статус: 5-ый класс)
Ответ отправлен: 05.07.2006, 10:43
Оценка за ответ: 4
Комментарий оценки:
Спасибо. Но это работает только с квадратными изображениями.
см. if BitMap.Width<>Bitmap.Height......
Не совсем то, что хотелось-бы

Отвечает: Physicist
Здравствуйте, Дмитрий Александрович!

Посмотри ссылки на www.efg2.com/Lab/ImageProcessing, в частности
http://www.efg2.com/Lab/ImageProcessing/Unit7.TXT
http://www.efg2.com/Lab/ImageProcessing/FlipReverseRotate.htm
(внизу последней страницы есть ссылка для скачивания исходного кода)

Затем примени эти процедуры для Image.Picture.Bitmap.
Ответ отправил: Physicist (статус: 3-ий класс)
Ответ отправлен: 05.07.2006, 10:57
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Супер сайт!


Вопрос № 48.238
Здравствуйте, уважаемые эксперты!
Что нужно сделать, чтобы в Tlabel.caption, Tedit.text можно было писать греческими буквами?
Я скопировал из Word-а Пи и вставил в Edit.text, но вместо пи получил ?, и вместо дельта получил ?.
Спасибо.
Отправлен: 05.07.2006, 15:06
Вопрос задал: Граур Василий Олегович (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Shcherbakov Anton
Здравствуйте, Граур Василий Олегович!
могу ошибиться.. попытайтесь подключить фонт поддерживающий греческие буквы и вставляйте не строками посимвольно
label.caption := символ1+символ2 и так далее..
Ответ отправил: Shcherbakov Anton (статус: 3-ий класс)
Ответ отправлен: 05.07.2006, 15:12

Отвечает: Physicist
Здравствуйте, Граур Василий Олегович!

Попробуй указать шрифт 'Arial Greek' (в системе это 'substitution' для Arial с кодировкой 1253 - Греция) для этих контролов.

Если не поможет - нужно переходить на Unicode. А все контролы в Delphi используют Ansi (может быть, в последних версиях это не так).
Unicode-контролы можно скачать с http://www.tntware.com/delphicontrols/unicode/
Должно помочь.
Ответ отправил: Physicist (статус: 3-ий класс)
Ответ отправлен: 05.07.2006, 15:29

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Граур Василий Олегович!
Я бы посоветовал использовать шрифт Symbol, который более распространен, чем Arial Greek. Кроме того, в настройках шрифта есть свойство Charset. Поищите там что-дь греческое =)
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 06.07.2006, 03:11


Вопрос № 48.239
Здравствуйте, уважаемые эксперты! Подскажите, пожалуйста, как узнать количество дней между текущей датой и любой другой? Заранее благодарен!
Отправлен: 05.07.2006, 15:21
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Андрющенко Вячеслав Васильевич!

вычесть одну дату из другой, результат округлить и взять по модулю:

Trunc(Abs(Date1 - Date2))
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 15:26
Оценка за ответ: 4

Отвечает: Physicist
Здравствуйте, Андрющенко Вячеслав Васильевич!

Введите две переменных, например Data1 и Data2, типа TDateTime, задайте им значения дат
Data1:=EncodeDate(2001{year},01{month},01{day});
Data2:=EncodeDate(2006{year},07{month},05{day});
число дней между датами
days_count:=Round(Data2-Data1);
А если нужно от и до включительно, то
days_count:=Round(Data2-Data1)+1;
Ответ отправил: Physicist (статус: 3-ий класс)
Ответ отправлен: 05.07.2006, 15:35
Оценка за ответ: 5

Отвечает: Nant
Здравствуйте, Андрющенко Вячеслав Васильевич!

функции для работы с датами можно найти в модуле DateUtils.pas, а описания к ним в стандартном хелпе delphi

Приложение:

Ответ отправил: Nant (статус: 2-ой класс)
Ответ отправлен: 05.07.2006, 15:51

Отвечает: Граур Василий Олегович
Здравствуйте, Андрющенко Вячеслав Васильевич!
Cм. Приложение

Приложение:

Ответ отправил: Граур Василий Олегович (статус: 1-ый класс)
Ответ отправлен: 05.07.2006, 16:50
Оценка за ответ: 4


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное