Форум: "Начинающим";
Текущий архив: 2012.04.29;
Скачать: [xml.tar.bz2];
Внизпроверить символы в строке Найти похожие ветки
← →
zZZ (2012-01-04 16:22) [0]нужно написать функцию, которая проверяет содержит ли строка недопустимые символы. как лучше и правильнее обращаться к символам в строке: через указатели или напрямую. вот 2 варианта.
функция будет использоваться для проверки значений полей при импорте данных из текстового файла в таблицу бд. может потребоваться импортировать 500 000 записей и для каждой записи вызвать ее и проверить значения для нескольких полей (500 000 records x N fields -> Call IsValidString). как будет быстрее всего.
type
{ }
TCharSet = set of Char;
function IsValidString1(String_: string; ValidChars: TCharSet): Boolean;
var
Char_: PChar;
begin
Result := False;
Char_ := PChar(String_);
while Char_^ <> #0 do
begin
if not (Char_^ in ValidChars) then
Exit;
Inc(Char_);
end;
Result := True;
end;
function IsValidString2(String_: string; ValidChars: TCharSet): Boolean;
var
I: Integer;
begin
Result := False;
for I := 1 to Length(String_) do
if not (String_[I] in ValidChars) then
Exit;
Result := True;
end;
← →
RWolf © (2012-01-04 17:19) [1]с string вроде как побыстрее; впрочем, расходы на общение с БД многократно перекроют выигрыш.
и да, const перед строковым параметром сильно уменьшит общее время выполнения функции.
← →
zZZ (2012-01-04 17:31) [2]ok, еще сопутствующий вопрос:
например у меня есть стринговое поле CodeField, для которого допустымыми являются строки, содержащие только буквы латинского алфавита и цифры.
может как-то можно на уровне TField контролировать вводимые значения, чтобы не писать функцию для проверки значения поля? т.е.CodeField.AsString := ACode;
<- если патаемся назначить полю значение содержащее недопустимые символы генерится исключение на уровне TField.
у TField есть свойства ValidChars, HasConstraint, CustomConstraint. Может их можно как-то использовать?
← →
Sha © (2012-01-04 18:13) [3]zZZ (04.01.12 16:22)
Приведенные варианты дают разный результат на одинаковых строках.
Оба варианта можно ускорить.
Если множество недопустимых символов - "хорошая" константа,
то часто можно ускорить еще больше.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.04.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c