Главная страница
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.5 MB
Время: 0.043 c
14-1100093600
Anonimus
2004-11-10 16:33
2004.11.28
Сокеты


3-1099400743
Nexel
2004-11-02 16:05
2004.11.28
Delphi+Bde+Paradox=Index out of date


4-1097587901
ShproTT
2004-10-12 17:31
2004.11.28
Частота монитора


1-1100351083
Norfolk
2004-11-13 16:04
2004.11.28
Стандартные сообщения


1-1100189994
jonik
2004-11-11 19:19
2004.11.28
Удаление символа конца строки в текстовом файле