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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2009, 22:53   #1
kisa_misa
 
Регистрация: 25.01.2009
Сообщений: 3
По умолчанию БД в Builder- перевод из Delphi

Пишу БД в билдере с помощью книги по делфи. Не могу найти ошибку в обработке таймера- ругается на переменную N.

Код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 int N=DataModule1->QIndPlanPrepNom->Value;
 DataModule1->QIndPlanPrep->Close();
 DataModule1->QIndPlanPrep->Open();
 DataModule1->QIndPlanPrep->Locate("Nom",N,[]);
 }
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 25.01.2009 в 23:02.
kisa_misa вне форума Ответить с цитированием
Старый 25.01.2009, 23:05   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Хм, а что это за параметры?
Третий параметр вообще неверный. Если это массив, то нужно указывать только имя, без квадратных скобок.

Функция Locate, на сколько я знаю, возвращает позицию первого вхождения подстроки в строку.
Вторым параметром вместо N, должна быть строка в которой вы ищете "Nom", а третий параметр - это позиция с которой нужно начинать поиск.

Сори если неверно понял.

Последний раз редактировалось MaTBeu; 25.01.2009 в 23:08.
MaTBeu вне форума Ответить с цитированием
Старый 25.01.2009, 23:15   #3
kisa_misa
 
Регистрация: 25.01.2009
Сообщений: 3
По умолчанию

Код для обновления данных в таблицы в книге представлен так
Код:
procedure TMainForm.Timer1Timer(Sender: TObject);
var
N:integer;
begin
N:=DM.QMainFilmID.Valuel
DM.QMain.Close;
DM.QMain.Open;
DM.QMain.Locate('FilmID',N,[]);
end;
Почти все перевела на си, осталась последняя строка. Не пойму что нужно.

Последний раз редактировалось kisa_misa; 25.01.2009 в 23:18.
kisa_misa вне форума Ответить с цитированием
Старый 25.01.2009, 23:25   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Хм, ну насколько я понял - функция Locate проверяет значение в поле базы данных. Тоесть в данном случае полем выступает FilmID, а значением - N. А третий параметр - это фильтр поиска.
Короче проблема в том, что второй параметр - int, а должен быть AnsiString. Пробуйте вот так
Код:
DataModule1->QIndPlanPrep->Locate("Nom",IntToStr(N),[loCaseInsensitive]);

//loCaseInsensitive - это поиск без ориентации на строчные и прописные буквы
MaTBeu вне форума Ответить с цитированием
Старый 26.01.2009, 06:04   #5
kisa_misa
 
Регистрация: 25.01.2009
Сообщений: 3
По умолчанию

Он все-равно ругается.
В нелпе он выдает такой синтаксис:
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);

Ошибка E2188: Выражение синтаксиса
(Это наиболее часто вызваны одним из следующих:
* двух операторов
* несовпадающими или недостающие скобки
* пропавших без вести с запятой в предыдущем заявлении. )
VarArrayOf(['Sight Diver', 'P', '408-431-1000'] Это работает, когда несколько полей. А если поле одно, то как тогда?
kisa_misa вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод таблицы из C++Builder в Access Rain9 Общие вопросы C/C++ 0 06.01.2009 20:23
Перевод кода с Fortran-77 на Delphi unhide Помощь студентам 3 20.05.2008 14:27
Перевод исходников из Delphi в C++ Bond Общие вопросы C/C++ 4 23.02.2008 10:31
Как сделать в Delphi перевод языков Илюха Общие вопросы Delphi 3 16.10.2007 11:44