Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизОрганизация вывода сообщения об ошибке Найти похожие ветки
← →
Романов Р.В. © (2004-05-05 13:16) [0]Нужно организовать метод ErrorMessage, который возвращает текстовое описание ошибки. Как лучше его организовать через case, через массив констант или еще как нибудь?
← →
MBo © (2004-05-05 13:22) [1]>текстовое описание ошибки
Системной или специфических своих?
Если второе, и этих ошибок море, то, имхо, наиболее проста реализация через TStringList
← →
clickmaker © (2004-05-05 13:25) [2]Либо через stringlist в ресурсах. Код ошибки = коду строки
← →
clickmaker © (2004-05-05 13:26) [3]Тьфу, блин! STRINGTABLE, конечно :)
← →
Goida © (2004-05-05 13:27) [4]Это зависит от того, как ты собираешься обрабатывать код ошибки. Можно и так и так. Понятнее: создать свой тип с идентификаторами ошибок и использовать значения этого типа, как индексы для массива с текстовым описанием.
Пример:type
TErrors = (erOK, erNotMem, erTooBig);
const
ErrorMessages: array [TErrors] of string =
("Всё в порядке.","Нет памяти.","Слишком большой.");
var
strErrMes: string;
... {где-то в программе}
strMes := ErrorMessages[erTooBig];
...
← →
MBo © (2004-05-05 13:30) [5]>clickmaker © (05.05.04 13:25) [2]
>Либо через stringlist в ресурсах
не stringtable ли имел в виду?
← →
MBo © (2004-05-05 13:30) [6]> [3]
Пардон ;)
← →
Романов Р.В. © (2004-05-05 14:34) [7]
> MBo © (05.05.04 13:22) [1]
> Системной или специфических своих?
Моих специфических. Точнее ошибок при работе одного из компонентов. Наподобие "Файл не найден", "Слишком большой период" и т.д. ошибок не много штук 10 - 15.
Насчет TStringList не допонял. Предлагается хранить описание в отдельном текстовом файле? Мне нужно что бы все было встроено в компонент. Т.е. что бы он был самодостаточным и сумел внятно проинформировать почему не отработал правильно.
> clickmaker © (05.05.04 13:26) [3]
> Тьфу, блин! STRINGTABLE, конечно :)
Нажал F1 вроде хороший и подходящий механизм. Но так и не понял как запустить этот редактор :(
← →
clickmaker © (2004-05-05 14:41) [8]
> Нажал F1 вроде хороший и подходящий механизм. Но так и не
> понял как запустить этот редактор
Да можно и дельфовым редактором обойтись. Или вообще блокнотом. Два файла делаешь: *.rc и *.inc. Добавляешь в проект. В rc:
#include "msg.inc"
STRINGTABLE
{
IDS_ERROR1 "Файл не найден"
...
}
В *.inc:
const
IDS_ERROR1 = 50001;
...
В проге
{$I msg.inc}
ErrText := LoadStr(IDS_ERROR1);
← →
Романов Р.В. © (2004-05-05 14:50) [9]Я то думал это редактор как на рисунке в Help :( Зачем такие сложности, когда можно все это в .pas файле в виде констант или массива костант прописать.
← →
WebErr © (2004-05-05 14:56) [10]
> clickmaker © (05.05.04 14:41) [8]
Кстати, для чего нужен файл .inc, про файл .rc я с Сишных времён знаю, а вот .inc - это что-то интересное...
← →
WebErr © (2004-05-05 14:58) [11]
> Романов Р.В. © (05.05.04 14:50) [9]
Если ошибок 2-3, то это однозначно можно и в паскалевских юнитах, а вот если больше, то лучше пусть хапнет память для описания ошибок в heap"е программы через ресурс stringtable (см. help по нему)
← →
WebErr © (2004-05-05 14:59) [12]
> Романов Р.В. © (05.05.04 14:50) [9]
Если ошибок 2-3, то это однозначно можно и в паскалевских юнитах, а вот если больше, то лучше пусть хапнет память для описания ошибок в heap"е программы через ресурс stringtable (см. help по нему)
← →
clickmaker © (2004-05-05 16:03) [13]
> WebErr © (05.05.04 14:56) [10]
>
> Кстати, для чего нужен файл .inc, про файл .rc я с Сишных
> времён знаю, а вот .inc - это что-то интересное...
Чтобы дать осмысленные имена константам. Хотя, можно канешна и просто LoadStr(57835)
← →
Goida © (2004-05-05 16:07) [14]
> Goida © (05.05.04 13:27) [4]
Чем плох этот вариант?
← →
Игорь Шевченко © (2004-05-05 16:08) [15]
> а вот если больше, то лучше пусть хапнет память для описания
> ошибок в heap"е программы через ресурс stringtable
Сам понял, что написал ?
← →
Романов Р.В. © (2004-05-06 06:33) [16]
> Goida © (05.05.04 16:07) [14]
Так и сделаю. Только вместо TErrors лучше использовать числа. Такой вариант будет более гибкий.
← →
SergLight © (2004-05-06 10:22) [17]
> Только вместо TErrors лучше использовать числа. Такой вариант
> будет более гибкий.
В каком смысле более гибкий?
← →
Романов Р.В. © (2004-05-06 10:32) [18]Можно возвращать и код ошибки и описание ошибки.
← →
SergLight © (2004-05-06 10:44) [19]А чем плох Ord(TErrorsVar) ?
← →
Романов Р.В. © (2004-05-06 11:21) [20]TErrorsVar имеет ограничение в 256 элементов. А я не люблю алгоритмы (технологии), которые имеют ограничения. Пусть даже я не достигну предела в данном случае, но если я буду применять эту технологию постоянно то рано или поздно возникнет ситуация когда эти ограничения проявят себя и придется изобретать новый велосипед.
← →
SergLight © (2004-05-06 12:11) [21]Насколько я помню, ограничение в 256 элементов будет иметь конструкция set of TErrors.
А сам TErrors ограничен размерами Integer, т.е. от –2147483648 до 2147483647. (По умолчанию от 0 до 2147483647).
← →
Романов Р.В. © (2004-05-06 12:37) [22]
> SergLight © (06.05.04 12:11) [21]
Убедил. Этот вариант тоже хороший. Что то не оценил я его сразу.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c