Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» FAQ по Borland C++ Builder

Автор: Kiklo
Дата сообщения: 06.06.2009 01:30
> Проблема: не создаётся файл!!!

Плохое имя файла. Обратный слеш при записи дублировать дважды. String FilePath = "C:\\\\f.txt";
Для проверки введите имя файла, не содержащее директория и посмотрите работает или нет.
Автор: gerome
Дата сообщения: 22.07.2009 09:32
Пардон за очень ламерский вопрос:
У меня CodeGear RAD Studio 2009, как в нём создавать проекты? Я нажимаю New Progect/Add the Progect, но не знаю какой тип проекта выбрать (в билдере всегда жал Run и не заморачивался на проекты...).

В какой литературе можно найти толковое описание создания проектов для новичков? Так чтобы без заумностей и по русски, по рабоче-крестьянски...
Автор: Meister Floh
Дата сообщения: 22.07.2009 09:35
gerome только в хэлпе и по ангельски.. И ничего заумного там нет.. А начни с VCL Form application или Console application в зависимости от потребностей, остальное прийдет со временем
Автор: clear2121
Дата сообщения: 21.08.2009 06:19
Всем ПРИВЕТ!
Хочу попробовать такую штуку - в классе создать TADOQuery (Q1). В самой проге TADOQuery (Q2) прикрутить к гриду. Потом вызвать функцию в класса и получить данные Q1 в Q2. Типа такого Q2 = ClassBase->FromDataSQL();
Как правильно сделать? Подскажите (может кто код кинет).
СПАСИБО!
Автор: serega747
Дата сообщения: 26.08.2009 18:09
Вечер добрый...

Помогите пожалуйста примерами или ссылками, по вопросу:
Как перетащить папки и файлы из одного StringGrid в другой StringGrid?

PS: Использую Borland C++ Builder 6.

Автор: Hiken
Дата сообщения: 27.08.2009 02:40
Хм, а как они (папки и файлы) у вас оказались в StringGrid? Компонент ведь для хранения строк…
Автор: Mizer73
Дата сообщения: 18.10.2009 12:12

Цитата:
Люди, как сделать чтобы после компиляции на C++ программа не требовала BORLNDMM.DLL & CC3260MT.DLL
качни её в нете и положи в папку system32

Автор: urmigar
Дата сообщения: 18.10.2009 22:42

Цитата:
Люди, как сделать чтобы после компиляции на C++ программа не требовала BORLNDMM.DLL & CC3260MT.DLL



Mizer73
Наверное, не это просят.

Автору вопроса: в свойствах проекта убрать галочку Use Runtime Libraries (это для CC3260mt и подобных). А про первый модуль можно почитать в комментах генерируемого средой проекта С++ Library.

Там есть фраза типа:
// To avoid using BORLNDMM.DLL, pass string information using "char *" or
// ShortString parameters.

и т.д.
Автор: clear2121
Дата сообщения: 04.12.2009 08:15
ПРивет всем! Задумался над таким вопросом.
ПРедставьте - имеем 3 ADOQuery - Q1, Q2, Q3. Делаем запрос с помощью Q1. Получаем данные. Теперь я хочу, чтоб полученные данные попали в Q2 и отобразились в Grid1. Затем сделать запрос в Q1 и данные передать в Q3 и отобразить в Grid2.
Не могу сообразить, как это сделать. И можно ли вообще это сделать?

СПАСИБО!
Автор: Tantos
Дата сообщения: 07.12.2009 03:11
clear2121
Зачем такие сложности? Почему бы просто не использовать Q2 и Q3 для запросов? Зачем использовать Q1? Гриды к ADOQuery прикручиваются через TDataSource.
Автор: clear2121
Дата сообщения: 08.12.2009 08:31
Tantos
идея, в общем, проста. Сделать класс, в нём есть ADOQuery. Мы формируем строку запроса и посылаем в класс, а он нам присылает данные, которые мы отображаем. А Квери мы просто объявляем.
Автор: Tantos
Дата сообщения: 08.12.2009 10:46
Т.е. ты хочешь результаты работы одного ADOQuery передать в другой ADOQuery? См. свойство ADOQuery::Recordset в этом случае.
Автор: clear2121
Дата сообщения: 08.12.2009 15:12
Tantos
Спасибо, пошёл читать. Если что, буду спрашивать.
Автор: kot3
Дата сообщения: 13.12.2009 07:52
Никто не подскажет что я делаю не так?
Вроде бы в RAD2010 декларирована поддержка DirectShow.
Пишу:
#include <DirectShow9.hpp>

И в ответ получаю:
[BCC32 Error] Directsound.hpp(61): E2316 'PD3DValue' is not a member of 'Dxtypes'
[BCC32 Error] Directsound.hpp(61): E2040 Declaration terminated incorrectly
[BCC32 Error] Directsound.hpp(67): E2316 'PD3DVector' is not a member of 'Dxtypes'
[BCC32 Error] Directsound.hpp(67): E2040 Declaration terminated incorrectly
[BCC32 Error] Directsound.hpp(123): E2316 'PReferenceTime' is not a member of 'Dxtypes'
[BCC32 Error] Directsound.hpp(123): E2040 Declaration terminated incorrectly
[BCC32 Error] Direct3d9.hpp(53): E2316 'PD3DVector' is not a member of 'Dxtypes'
[BCC32 Error] Direct3d9.hpp(53): E2040 Declaration terminated incorrectly
[BCC32 Error] DirectShow9.hpp(237): E2451 Undefined symbol 'IDirectShowStream'
[BCC32 Error] DirectShow9.hpp(237): E2299 Cannot generate template specialization from 'DelphiInterface<T>'
[BCC32 Error] DirectShow9.hpp(237): E2040 Declaration terminated incorrectly
[BCC32 Error] DirectShow9.hpp(488): E2316 'PReferenceTime' is not a member of 'Dxtypes'
[BCC32 Error] DirectShow9.hpp(488): E2040 Declaration terminated incorrectly
[BCC32 Error] DirectShow9.hpp(656): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1268): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1270): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1652): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1654): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1686): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1692): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1704): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1706): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1708): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1712): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1716): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1720): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1722): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1724): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1726): E2257 , expected
[BCC32 Error] DirectShow9.hpp(1748): E2257 , expected

Спасибо.
Автор: asi81
Дата сообщения: 14.12.2009 16:09
clear2121
Если я правильно понимаю, Вы хотите сделать Sql запрос к AdoQuery и отобразить результат в другом AdoQuery. Это, вроде как невозможно - так как компонент AdoQuery не является базой данных и не может обрабатывать sql запросы. Если же просто надо взять данные из AdoQuery и наложить на них дополнительный фильтр, то поможет такой подход

TClientDataSet* a = new TСlientDataSet(NULL);
a->CloneCursor(AdoQuery ,0,0);
a->Filter = "мой фильтр";
a->Filtered = true;

и грид привязываете к ClientDataSet


Добавлено:
Недавно столкнулся с проблемой, которая мне просто выносит мозг.
В свое время перенес один проект на юникод, когда переходил с 6го билдера на 2009.
Все вызовы c_str() заменил на t_str() и радовался бы жизни. Но! Второй раз замечаю, что t_str() искажает результаты! Тоесть если текст был "12345", результат t_str() может быть "1234sd". Такое ощущение, что она после вызова t_str() сам обьект строки берет и делает чтото со своими внутренними данными. Стоит 2009 билдер и 4й патч.
Кто-нибудь сталкивался с подобной проблемой?
Автор: clear2121
Дата сообщения: 25.12.2009 08:50
asi81
Почитал и понял - да нельзя из одного Квери в другой передавть данные.

А смысл вот в чём. Пишем класс для работы с таблицами. В нем есть Квери. Из программы присылаем запрос и класс подставляет его в Квери. Получаем данные. ОНИ В НАПИСАННОМ КЛАССЕ. А в проге есть 2 грида. Конечно, можно 2 Квери создать и каждый прикрутить к своему гриду. А хочется из Квери передать данные в один грид, затем в другой и потом с ними ещё работать.

Tantos
Читаю и, честно признаюсь, что то непонятно. Как?

СПАСИБО!


Добавлено:
И ещё.
Может кто объяснит или ткнёт носом где почитать о следующем - как в TDataSource передать данные.
Как пример. Есть тхт файл. Там через запятую информация. Типа CVS. Хочется вручную этот файл загрузить и отобразить в гриде через TDataSource.

БУДУ ВЕСЬМА ПРИЗНАТЕЛЕН!
Автор: ShIvADeSt
Дата сообщения: 25.12.2009 09:00
clear2121
У RXLib видел компоненту MemoryTable. Попробуй в нее записать что нить и прикрутить к ней датасорс.
А так вообще текстовые файлы проще в обычную гриду сувать и правильнее.
Автор: clear2121
Дата сообщения: 25.12.2009 10:04
ShIvADeSt
СПАСИБО!
Но мне хочется сам принцип понять и тхт файл я указал как пример. Мне кажется, что это самый простой пример для понимания самого механизма.
Автор: asi81
Дата сообщения: 25.12.2009 11:32
clear2121
Во первых - датасорс никаких данных не хранит, поэтому запихнуть их туда нельзя и взять их из него тоже нельзя. Датасорс это посредник между датасетом и граф. интерфейсом.
Для того, чтобы что то впихнуть в любой датасет, который позволяет запись существует

DataSet->Append();
Field1->Value = Val1; // Заполнение полей новой строки
Field2->Value = val2;
....
DataSet->Post();

Парсинг txt файла придется написать ручками

Если же ваш DataSet явлеется TClientDataSet, то тогда можно данные хранить в xml формате, и тогда ручками ничего не надо будет писать.

Если ваш датасет не клиентский, то можно хранить ваши данные в xml формате, згружать их в дополниетльный ClientDataSet, с теми же полями, что и ваш датасет и перекидывать данные из одного датасета в другой с помощью CopyFields - но эта функция доступна только в новых версиях билдера.
Автор: clear2121
Дата сообщения: 25.12.2009 11:56
asi81
спасибо, буду дальше копать. И конечно ручками запихивать. В этом вся суть. Хочу понять и попробовать САМ туда помещать данные.

СПАСИБО!

Добавлено:
Только вот скорость помещения туда данных, например с КВЕРИ, очень быстрая.
Буду разбираться
Автор: asi81
Дата сообщения: 25.12.2009 12:18
Недавно начал заниматься с датасетами. Столкнулся с проблемой, когда к примеру какой то механизмм работает с датасетом он постоянно перемещает курсор. Но иногда по какому то евенту другой механизм может дернуть курсор в своих целях. Какие типовые приемы существуют в ситуации когда два разных механизма работают с данными одного датасета?
Автор: volser
Дата сообщения: 25.12.2009 15:46
asi81
Кто такой механизм и как он работает с датасетом? Что значит одновременно? Потоки?

А вообще принцип работы прост. Перед работой сохранили текущую позицию. Отключили реакцию контролов. Сделали все действия. Восстановили состояние.
Автор: asi81
Дата сообщения: 25.12.2009 17:05
volser
под одновременно я понимал что в какой то момент работы с датасетом начинает происходить цепная рекция с событиями от контролов. Отключить их конечно выход. Но так как это глобальная таблица, на которую ссылаются почти половина фреймов в нехилом проекте. И есть вероятность что что-нибудь отключить я забуду. Все это вообще сподвигает меня просто сделать внутреннюю c++ таблицу без каких либо курсоров, так как из нее все равно все только читают.






Сегодня появился новый вопрос! Хочу собрать сборку проекта, чтобы статически собирать с midas. Для того чтобы не было проблем с устаревшими библиотеками midas.dll, так как есть подозрение что один глюк происходит из-за некоректной версии midas.dll. Пробовал вставлять в проект

#pragma link "MidasLib"

Линковшик меня посылает с фразой Unable to open file 'MIDASLIB.OBJ'

Пробовал добавить #pragma link "Midas" или просто добавить в проект midas.lib Проект стал больше на 250 кб - но тем не менее на машинах, где нет midas.dll он все равно ругается что не может найти midas.dll.

У меня билдер 2009.
Автор: volser
Дата сообщения: 25.12.2009 18:08
asi81
Отключить я имел в виду методом DisableControls.
Автор: asi81
Дата сообщения: 25.12.2009 19:12
volser
Не знал о такой функции. Спасибо за помощь - должно помочь по идее.
Автор: clear2121
Дата сообщения: 29.12.2009 09:42
Привет ВСЕМ!
В программе получаю данные в HEX кодах. Например 80 12 или 82 54. Мне надо отобразить десятичные числа из этх HEX.
80 12 = 18, а 82 54 = 596.
Эти данные заносятся в переменную, которая объявляется как unsigned char Dur[2]; И я вижу их.
ПОМОГИТЕ!
Автор: Garrett
Дата сообщения: 29.12.2009 10:13
clear2121
unsigned char x = Dur[0] & 0x0F;
Dur[0] = Dur[1];
Dur[1] = x;
short i;
memcpy( &i, Dur, 2 );
Автор: clear2121
Дата сообщения: 29.12.2009 10:49
Garrett
СПАСИБИЩЕ!!!
Автор: asi81
Дата сообщения: 29.12.2009 10:52
Garrett
Только я не понял, зачем надо делать Dur[0] & 0x0F?
А про какой причине не учитывается начальная восьмерка?
Автор: clear2121
Дата сообщения: 29.12.2009 11:15
Ещё бы кто помог с таким вопросом! В файле время находится в бинарном формате
C2 CC D3 45 1D 1E BC 00 - 01.09.2009 0:00:27
C2 CC D3 45 1D 6C DC 00 - 01.09.2009 0:01:07
Можно как то привести из HEX в TDateTime перегнать. Буду весьма признателен.
Hex данные такие же как в Парадоксовской таблице
СПАСИБО!

Страницы: 12345678910111213141516171819202122232425262728

Предыдущая тема: ms exchange


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.