Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 10:01   #1
Nikai
 
Регистрация: 10.01.2013
Сообщений: 6
По умолчанию работа со строками в бд

Доброго времени суток, форумчане!!
Вот такая проблема:мне нужно сделать проверку,имеется ли вторая точка в строке и если имеется,то сравнить знак до точки со знаком из другой строки после 2-го пробела.Вот собственно код:
Код:
if pos('.',delete(datamodule3.employeestable1.fieldbyname('fio').asstring,1,pos('.',datamodule3.EmployeesTable1.FieldByName('fio').AsString)))<>0 then
     if ansilowercase(stringgrid1.Cells[2,i][pos(' ',delete(stringgrid1.cells[2,i],1,pos(' ',stringgrid1.Cells[2,i])))+1])=ansilowercase(datamodule3.EmployeesTable1.FieldByName('fio').AsString[pos('.',delete(datamodule3.EmployeesTable1.FieldByName('fio').AsString,1,pos('.',datamodule3.EmployeesTable1.FieldByName('fio').AsString)))-1]) then begin
ругается на то,что постоянная не может использоваться как переменная(constant object cannot be passed as var parameter)
Nikai вне форума Ответить с цитированием
Старый 17.01.2013, 10:49   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
ругается на то,что постоянная не может использоваться как переменная(constant object cannot be passed as var parameter)
Логично. Как можно изменить объект который нельзя менять?
просто введи переменные и "скопируй" туда данные
Код:
var
  fio, s: string;
fio:=datamodule3.employeestable1.fieldbyname('fio').asstring;
s:=stringgrid1.Cells[2,i];
а потом (при необходимости) "верни" обратно
Код:
... .fieldbyname('fio').asstring:=fio;
... .cells[2,i]:=s;
и код будет немножко легче читать(понимать)
Код:
if pos('.',delete(fio,1,pos('.',fio)))<>0 then
     if ansilowercase(s[pos(' ',delete(s,1,pos(' ',s)))+1])=ansilowercase(fio[pos('.',delete(fio,1,pos('.',fio)))-1]) then begin
а еще лучше
Код:
k1:=posEx('.',fio,1); //PosEx есть начиная с Delphi7
if k1>0 then k1:=posEx('.',fio,k1+1); // k1>0 есть вторая точка
//аналогично k2 позиция второго пробела

if (k1>1) and (k2>1) then begin
 if s[k2-1] <> fio[k1-1]
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.01.2013 в 10:53.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками с++ Хорёк Помощь студентам 2 27.06.2012 21:18
работа со строками (С++) lenincore Помощь студентам 3 16.01.2012 00:28
Работа со строками в СИ. just_dake Помощь студентам 5 04.05.2011 18:19
работа со строками CHOSEN1 Помощь студентам 2 23.12.2010 15:00
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19