Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.5 MB
Время: 0.033 c
1-1083826990
GAlexis
2004-05-06 11:03
2004.05.23
Можно ли организовать SMS рассылку из программы Delphi?


14-1083326823
Тимохов
2004-04-30 16:07
2004.05.23
Советы Рихтера не пользоватся ExitThread.


1-1084189258
Demon_do
2004-05-10 15:40
2004.05.23
Другой вид формы...


6-1081103599
Wiz@rd
2004-04-04 22:33
2004.05.23
Send ICQ message


14-1083547372
MPS
2004-05-03 05:22
2004.05.23
Задачка по информатике...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский