Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

определение результата: string или integer.   Найти похожие ветки 

 
rom   (2004-11-12 06:30) [0]

Уважаемые господа дельфиры, помогите найти ответ на сложившуюся ситуацию:
Имеется задача, результатом которой может быть как integer так и string. Далее исходя из типа результата он обрабатывается по разному.Как определить является ли результат integer или он string?


 
Alex_Petr ©   (2004-11-12 06:36) [1]

VarType, VarIsStr ?


 
Alx2 ©   (2004-11-12 08:01) [2]

overload?


 
Erik1 ©   (2004-11-12 09:58) [3]

overload непоможет, поскольку входные параметры неотличаются. А вот если определить процедуру и в нее передовать string или integer от можно написать 2 overload процедуры.
MyDetect(var Value: String); overload;
MyDetect(var Value: Integer); overload;


 
Владислав ©   (2004-11-12 10:02) [4]

Например:
type
 TResultType = (rtString, rtInteger);
function DoMyFunction(var StrVar: string; var IntVar: Integer): TResultType;


 
MBo ©   (2004-11-12 10:02) [5]

>Имеется задача, результатом которой может быть как integer так и string
Ну так покажи, что это за задача у тебя


 
Anatoly Podgoretsky ©   (2004-11-12 10:53) [6]

rom   (12.11.04 06:30)  
Паскаль не возволяет создавать функции такого вида
func: Integer, string;


 
PVOzerski ©   (2004-11-12 11:01) [7]

Можно, конечно, вернуть вариант или свою поделку в том же стиле. А надо?


 
rom   (2004-11-12 13:13) [8]

Немного поясню ситуацию:
имеется текстовый файл,в string"овую переменную читаем строчку
из этого файла.
Далее необходимо определить какого типа информацию прочитали:
цифровую или текстовую.

Допустим в txt файле имеются строки:

123
asdf
wert
2345


 
Megabyte-CeerCop ©   (2004-11-12 13:16) [9]

Создай дополнительную булевскую переменную, через которую передавай какой тип результата. True - int; false - text.
А при обработке проверяй эту переменную и вызывай соотв. код.


 
Anatoly Podgoretsky ©   (2004-11-12 13:17) [10]

rom   (12.11.04 13:13) [8]
Текстовую во всех случаях


 
PVOzerski ©   (2004-11-12 13:21) [11]

Дык это ж не разный тип возвращать надо, а конвертабельно/неконвертабельно в число (т. е. что-то булево, true/false). Проверять можно, например, через процедуру val.


 
Digitman ©   (2004-11-12 14:43) [12]


> rom   (12.11.04 06:30)  


решение до смешного простое :

function PrepareValue(s: String): Variant;
begin
Result := s;
try Result := StrToInt(Result) except end;  
end;

...

var
v: variant;

v := PrepareValue("чего-то там");

if TVarData(v).VType = varInteger then
 ЦЕЛОЕ СО ЗНАКОМ
else
 СТРОКА


 
rom   (2004-11-13 06:28) [13]

спасибо за ответы
попробую разобраться с примерами.
вообще эта вещь нужна для защиты от "дурака", т.е.
программа считывает из файла параметры и их обрабатывает
(в этом случае ini файл не подходит).Параметры должны быть
числом, к примеру установкой времени. Хочу сделать проверку, что бы программа не вылетала с ошибкой если какой нибудь юзер специально укажет вместо параметров времени "адракадабру".


 
Defunct ©   (2004-11-13 11:22) [14]

Digitman ©   (12.11.04 14:43) [12]

> Try Result := StrToInt(Result)

IMHO не надо это.

Ведь можно просто

> Допустим в txt файле имеются строки:
> 123
> asdf
> wert
> 2345

> Хочу сделать проверку, что бы программа не вылетала с ошибкой если какой нибудь юзер специально укажет вместо параметров времени "адракадабру".

A : Array[1..x] of Variant;
S : String;

while not Eof(F) do
begin
 Read(F, S);
 inc(i);
 A[i] := S;
end;
..

Try
 // Действия над элементами массива A
Except
 ShowMessage("В Файле была "адракадабра" вместо чисел")
end;


 
KilkennyCat ©   (2004-11-13 14:21) [15]

strtointdef(s, уникальный_идентификатор_ошибки)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1100438747
Иной
2004-11-14 16:25
2004.11.28
Сумрачная ветка


1-1100364620
serj
2004-11-13 19:50
2004.11.28
описание динамического массива в классе


4-1097664899
Дмитрий Ботвин
2004-10-13 14:54
2004.11.28
Экспорт функций


1-1100264537
grig_p
2004-11-12 16:02
2004.11.28
Обрезание текста в ListView


14-1100255146
Pentium133
2004-11-12 13:25
2004.11.28
DVD plaer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский