Форум: "Основная";
Текущий архив: 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