Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Организация вывода сообщения об ошибке   Найти похожие ветки 

 
Романов Р.В. ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.025 c
9-1074314523
ZAROLF
2004-01-17 07:42
2004.05.23
Меню в игре.


1-1083743032
andsoft
2004-05-05 11:43
2004.05.23
Помогите кто может


7-1082208137
Ded Moroz
2004-04-17 17:22
2004.05.23
DSPack


11-1071335103
Vladimir Kladov
2003-12-13 20:05
2004.05.23
Версия 1.87


4-1081086796
Константин
2004-04-04 17:53
2004.05.23
Иконка на панели задач