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

Вниз

определение результата: 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1099323646
OSokin
2004-11-01 18:40
2004.11.28
Оцените новый сайт (личный)


1-1100177350
dolphin
2004-11-11 15:49
2004.11.28
Текстовый редактор


1-1100118517
Jiuradfer
2004-11-10 23:28
2004.11.28
А как програмно возвести число в степень?


14-1100107401
lipskiy
2004-11-10 20:23
2004.11.28
Посоветуйте формат хранения данных


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





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