Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1325588259
Валерий
2012-01-03 14:57
2012.04.29
Запретить перемещение окна зная его handle


15-1323231309
Skyle
2011-12-07 08:15
2012.04.29
Ищу новых коллег (г. Новосибирск).


15-1325052694
Медвежонок Пятачок
2011-12-28 10:11
2012.04.29
Камень в огород (джава комьюнити)


2-1325688285
Scott Storch
2012-01-04 18:44
2012.04.29
обрезаются символы при назначении значения полю


15-1324549390
Раммер
2011-12-22 14:23
2012.04.29
Посоветуйте книжку по SQL.





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