Вопрос № 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
Здравствуйте, уважаемые эксперты! Подскажите, пжалуйста, как из моего приложения запустить другое? И можно ли выбирать, показывать или нет форму второго приложения? Заранее благодарен!
Отвечает: 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!
Далее...
Я нашел эту надстройку, но проблема не решилась.
Если Вам не трудно, обьясните в чем дело.
Большое спасибо!
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Герасименко Алексей Анатольевич/Geer!
Для установки Delphi 9 нужно предварительно установить:
.NET 1.1 Framework Redistributable
.NET 1.1 SDK
.NET J#
Internet Explorer 6 SP 1
Обычно все это идет вместе с инсталляцией Delphi, но если нет, то
1. Найти все это на сайте Microsoft
2. Скачать с сайта Borland (Для этого надо регистрироваться) - там есть прямые ссылки на то, что нужно к триальной версии, но полная требует того же
Есть такая проблема (возможно старая как мир, но решить ее мне надо):
При работе в программах с дробными десятичными числами возникает проблема с разделитетелем целой и дробной части. Дело в том, что в разных компьютерах в настройках 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;
Отвечает: 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, но вместо пи получил ?, и вместо дельта получил ?.
Спасибо.
Отвечает: 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. Поищите там что-дь греческое =)
Введите две переменных, например 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