Главная страница
    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.045 c
14-1100055330
Думкин
2004-11-10 05:55
2004.11.28
С днем рождения!


14-1100262738
asdqwer
2004-11-12 15:32
2004.11.28
VOB->AVI


3-1098953421
Tolya
2004-10-28 12:50
2004.11.28
как вывести в dbtext1 поле таблици????


1-1099942188
Rusty
2004-11-08 22:29
2004.11.28
Вызов процедуры, принадлежащей дочернему окну...


3-1099395648
axx
2004-11-02 14:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский