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

» FAQ по Borland C++ Builder

Автор: diaz85
Дата сообщения: 18.01.2008 21:58
Garrett
супер!! заработало! спасибо. а что есть прям уж такая принципиальная разница?
Автор: diaz85
Дата сообщения: 19.01.2008 12:06
столкнулся вот еще с одной траблой.... поискал по форуму, погуглил, но ничего стоящего не нашел..

трабл в следующем.. есть dbf в досовской кодировке.. я данные от запросов вывожу в dbgrid и естественно получаю вместо русских слов каракули. как заставить грид работать с дос. кодировкой? и можно ли в гриде рабоать с отдельной ячейкой, если да то как к ней обратиться?
пс базу конвертить сторонними утилитами нельзя.. буду признателен за помощь
Автор: vidic777
Дата сообщения: 19.01.2008 16:27
diaz85

Цитата:
трабл в следующем.. есть dbf в досовской кодировке.

Когда то пользовался компонентом TDBF (на вскидку здесь можно скачать _http://www.mnogosofta.com/soft_3460.html), по умолчанию если не ошибаюсь он работает с кодировкой 866, а для того чтоб заработал с CP1251 нада в исходниках менять тип кодировки и перекомпилять компонент (сейчас не помню точно где но если очень нада буду вспоминать). Еше вариант - компонент Apollo VCL (находится в обменнике).
Автор: diaz85
Дата сообщения: 19.01.2008 18:07
vidic777
а более стандартными методами нельзя?

просто время поджимает((

пытался поменять charset на OEMcharset... в итоге получил что отображаются только некоторые буквы, отсальные тоже криво...

пс пытаюсь все это сделать через адо... для отображения использую как уже писал выше DBGrid....

Добавлено:


решил проблему путем скачивания драйвера Visual Fox Pro ODBC 9.0, установкой его и коннектом к базе тоже соответственно через него. + если дбфка досовская, то установка dbgrid->font->charset=oemcharset.

скачать драйвер можно приблизительно отсюда _msdn.microsoft.com/vfoxpro/downloads
Автор: vidic777
Дата сообщения: 20.01.2008 04:24
diaz85

Цитата:
решил проблему путем скачивания драйвера Visual Fox Pro ODBC 9.0,

Неплохое решение, поздравляю.


Цитата:
а более стандартными методами нельзя?

Сорри, что не подсказал раньше, прочел Ваше сообщение и вспомнил, в BDE-Administrator вкладка "Configuration" Ветка дерева: "Configuration->Drivers->Native" для драйвера "DBASE" или "FOXPRO" в параметре "LANGDRIVER" поставить значение "dBASE RUS cp866". Но работает только если есть Русские и Английские символы, у меня были и Украинские то этот способ не очень помогал (Украинские неправильно отображались). Потом при создании псевдонима в БДЕ выбрать тип "STANDART" и указать в параметре "DEFAULT DRIVER" значение или "DBASE" или "FOXPRO"
Еще раз сорри.
Автор: Garrett
Дата сообщения: 20.01.2008 08:49
diaz85
А уйти с dbf нельзя?
Имхо, лучше потратить день-два на перевод в любой sql server в кодировку 1251 (если только рус-анг) или в юникод(если есть символы нац.алфавитов), а потом потраченное время вернется многократно...
Автор: diaz85
Дата сообщения: 20.01.2008 09:03
Garrett
просто другая контора поставляет информацию в дбф. я так бы с радостью вобще в идеале надо сделать выгрузку из дбф-ки в оракл. но это уже следующим этапом.

vidic777
спасибо
Автор: Ape
Дата сообщения: 20.01.2008 11:35
Помогите кто знает!!!
Есть StatusBar от TMS. Хочу в нём организовать ProgressBar.
Доступ к значению ProgressBar на Delphi выглядит так:

Код:
advOfficeStatusBar1.Panels[4].Progress.Position := 100
Автор: Garrett
Дата сообщения: 20.01.2008 14:13
Ape
А если так
advOfficeStatusBar1->Panels->Items[4]->Progress->Position = 100;
Автор: Ape
Дата сообщения: 20.01.2008 15:02
Garrett

Цитата:
А если так
advOfficeStatusBar1->Panels->Items[4]->Progress->Position = 100;

Да! Именно так! Спасибо!
Автор: wwwregus
Дата сообщения: 22.01.2008 16:11
подскажите как правильно инкрементировать адрес:
есть адрес BA =(void*)0x00495498;
как увеличить его на 2
Автор: Garrett
Дата сообщения: 22.01.2008 16:39
wwwregus
А так не работает?
BA += 2;
Автор: wwwregus
Дата сообщения: 22.01.2008 17:03
Garrett нет.
((int*)BA)++;((int*)BA)++; вот так работает
Автор: diaz85
Дата сообщения: 22.01.2008 17:59
каким образом можно поправить масштабирование формы и элементов на ней при изменении разрешения экрана или смене количества точек на дюйм в настройках экрана? просто при увеличении допустим кол-ва точек на дюйм на форме не отображаются все элементы...
Автор: Garrett
Дата сообщения: 22.01.2008 19:28
diaz85
посмотри Scale или что-то подобное у формы

wwwregus
Я ошибся маленько, указатель у тебя void*, т.е. беcтипный, и его надо приводить к нужному типу, т.к. sizeof(void)=0 .
Если как int,
((int*)BA) += 2;
то он так у тебя увеличится на 8 байт.

Если надо на 2 байта, то тогда так
((char*)BA) += 2;
Автор: mozgodrocha
Дата сообщения: 23.01.2008 19:24
Народ, как стандартными средствами заполнить все поля такой структуры:
typedef struct {
    long    FileSz;
    long    Reserved;
    long    BmpOffset;
    long    BmpSzHead;
    long    X;
    long    Y;
    unsigned int    Planes;
    unsigned int    BitsPPixel;
    long    Comp;
    long    BmpSzData;
    long    HRes;
    long    VRes;
    long    Colors;
    long    ImpColors;
} BMPHEADER;
Как вообще в C++ Builder'е работать с BMP? Как например, добраться до пикселя с координатами (x, y), поменять значение компонент RGB и сохранить измененную картинку?
Автор: diaz85
Дата сообщения: 23.01.2008 20:22
хотелось бы послушать мнение более опытных..

есть таблица с полями:

номер1 название номер2

необходимо осуществить выгрузку в файл в формате

номер1;название1;номер2;название2. т.е. что для одних имен номер2 - то для других имен номер1(т.е. название2 это то название у которого номер1=номеру2 названия1). как лучше осуществить? решил пока все след образом: использую 2 формы в одну делаю селект * (вывожу в грид), в другую(она невидимая и на ней также расположен грид) делаю select * from table where номер2='номер1'. и потом с помощью Form->DBGrid->Columns->Items[i]->Field->Value. передвигаюсь по строкам с помощью Next()
составляю из этих гридов необходимую мне строку и пишу ее... 4500 записей выгружются порядка 40 секунд с локального компа...... можно ли сделать проще?
Автор: Garrett
Дата сообщения: 23.01.2008 23:56
diaz85
Ничего не понятно, что хочешь...
Но:
- почему не сделать запрос в ADOQUERY и прочитать его без всяких таблиц и невидимых форм?
- может такой ОДИН селект пойдет
select nomer1, nazvanie as nazvanie1, nomer2, nazvanie as nazvanie2 from table
when nomer1=nomer2
order by nomer1, nazvanie1
Автор: Tantos
Дата сообщения: 24.01.2008 04:44
mozgodrocha

Код:
BMPHEADER bmp;

bmp.X = ...
Автор: vidic777
Дата сообщения: 31.01.2008 09:56
Сорри что задаю вопрос сюда, в ветку "Вопросы по Delphi (все версии) - часть 3" уже задавал, но никто не смог ответить а проблему мне эту очень нужно решить. Если есть еще какие-то идеи и методы по переводу проекта из одной версии среды разработки в другую подскажите где об этом можно почитать, т.к. я первый раз сталкиваюсь с такой проблемой (ранее все переходы от BCB6, BFD2006 в RS2007 были без особых трудностей) Заранее спасибо и сорри за оф-топ.

---
Подскажите как решить такую проблему ?
Пытаюсь чужой проект, который мне необходимо продолжать дорабатывать, перетащить из BCB 5.0 в RAD Studio 2007 и при открытии файла *.bpr получаю сообщение об ошибке (в BCB 5 все открывается и компилится нормально):
Error
---------------------------
Parameter "itemInclude" cannot be null.
---------------------------
OK Details <<
---------------------------
Скриншот:


Полный текст сообщения

[more]Error
---------------------------
Parameter "itemInclude" cannot be null.
---------------------------
OK Details <<
---------------------------
[21E584AB]{dotnetcoreide100.bpl} InteropApp.TMSBuildOpenProject.BeginWrite (Line 1266, "InteropApp.pas" + 1) + $25
[2000A455]{rtl100.bpl } System.@CheckAutoResult (Line 18047, "sys\system.pas" + 6) + $0
[21E584AB]{dotnetcoreide100.bpl} InteropApp.TMSBuildOpenProject.BeginWrite (Line 1266, "InteropApp.pas" + 1) + $25
[220A0C0B]{bcbide100.bpl} BdsToMSBConverter.TBdsProjToMSBConverter.CreateFileListFromMainSource (Line 758, "BdsToMSBConverter.pas" + 14) + $28
[220A0032]{bcbide100.bpl} BdsToMSBConverter.TBdsProjToMSBConverter.ConvertFileList (Line 617, "BdsToMSBConverter.pas" + 9) + $3
[2209E142]{bcbide100.bpl} BdsToMSBConverter.TBdsProjToMSBConverter.Convert (Line 218, "BdsToMSBConverter.pas" + 4) + $3
[220A1C68]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.ConvertBDSProjToMSBuildProj (Line 129, "CppProjectImport.pas" + 11) + $3
[220A1E7D]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.ConvertOldCBuilderProject (Line 171, "CppProjectImport.pas" + 21) + $5
[220A19EC]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.Convert (Line 100, "CppProjectImport.pas" + 8) + $9
[220A4D95]{bcbide100.bpl} CppProjectImport.TCppProjectConverter.Create (Line 687, "CppProjectImport.pas" + 5) + $28
[220A1FD9]{bcbide100.bpl} CppProjectImport.TCppLegacyProjectFileHandler.FileOpen (Line 204, "CppProjectImport.pas" + 13) + $3
[20A5D95C]{coreide100.bpl} DocModul.TFilterList.OpenFile (Line 786, "DocModul.pas" + 35) + $14
[20A62942]{coreide100.bpl} DocModul.ProjectOpenDialog (Line 3146, "DocModul.pas" + 30) + $1E
[00415D67]{bds.exe } AppMain.TAppBuilder.ProjectOpen (Line 2616, "ui\AppMain.pas" + 3) + $0
[2004018B]{rtl100.bpl } Classes.TBasicAction.Execute (Line 11081, "common\Classes.pas" + 3) + $7
[20151359]{vcl100.bpl } ActnList.TContainedAction.Execute (Line 388, "ActnList.pas" + 1) + $2C
[201520BC]{vcl100.bpl } ActnList.TCustomAction.Execute (Line 1000, "ActnList.pas" + 7) + $8
[20040057]{rtl100.bpl } Classes.TBasicActionLink.Execute (Line 11010, "common\Classes.pas" + 2) + $7
[2013CA15]{vcl100.bpl } Controls.TControl.Click (Line 5227, "Controls.pas" + 7) + $7
[2019BCF0]{vcl100.bpl } ComCtrls.TToolButton.Click (Line 17003, "ComCtrls.pas" + 0) + $0
[2013CEA7]{vcl100.bpl } Controls.TControl.WMLButtonUp (Line 5365, "Controls.pas" + 6) + $3E
[2013C527]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[2013C1B4]{vcl100.bpl } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C
[2013FEC6]{vcl100.bpl } Controls.GetControlAtPos (Line 7095, "Controls.pas" + 4) + $73
[2013FF8E]{vcl100.bpl } Controls.TWinControl.ControlAtPos (Line 7118, "Controls.pas" + 13) + $E
[2013C1B4]{vcl100.bpl } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C
[20140199]{vcl100.bpl } Controls.TWinControl.IsControlMouseMsg (Line 7182, "Controls.pas" + 15) + $1F
[20140561]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7269, "Controls.pas" + 76) + $6
[2019DD33]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonState (Line 18148, "ComCtrls.pas" + 5) + $1C
[2019DD76]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonStates (Line 18158, "ComCtrls.pas" + 3) + $4
[201A06A9]{vcl100.bpl } ComCtrls.TToolBar.WndProc (Line 19588, "ComCtrls.pas" + 80) + $6
[1032C789]{cxLibraryC11.bpl} cxContainer._16891 + $95
[2013FDD0]{vcl100.bpl } Controls.TWinControl.MainWndProc (Line 7073, "Controls.pas" + 3) + $6
[20040E4C]{rtl100.bpl } Classes.StdWndProc (Line 11583, "common\Classes.pas" + 8) + $0
[2004A49E]{rtl100.bpl } Contnrs.TComponentList.GetItems (Line 380, "common\Contnrs.pas" + 1) + $4
[201625F0]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8105, "Forms.pas" + 23) + $1
[2016262A]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8124, "Forms.pas" + 1) + $4
[2016291F]{vcl100.bpl } Forms.TApplication.Run (Line 8223, "Forms.pas" + 20) + $3
[0042297A]{bds.exe } bds.bds (Line 195, "" + 7) + $7[/more]


Первый раз сталкиваюсь с такой ошибкой и незнаю как найти решение, в каку сторону копать.
Очень прошу помочь в данной проблеме.

Заранее благодарен.
---
Автор: vidic777
Дата сообщения: 01.02.2008 12:28
Еще раз сорри, проблему решил.
Автор: Mizanthrope
Дата сообщения: 03.02.2008 02:39
Я извиняюсь, если не в ту тему или уже было, но...

Вопрос такой: можно ли как-нибудь конвертнуть проект из С++Builder'а в Visual C++ .NET?
Автор: Garrett
Дата сообщения: 03.02.2008 08:31
Mizanthrope
Если проект чистый С++/STL/WinAPI без VCL, то нет проблем.
Иначе никак или потребуется много времени(зависит от размера).
Автор: akaGM
Дата сообщения: 07.02.2008 18:39
mozgodrocha
ты бы эта, зашёл в Вопросы по программированию на С++
а то вопрос закинул, тебе ответили, дискуссия довольно жаркая возникла, а от тебя ни гу-гу
отчитался бы (в качестве хорошего тона) чтО там было-то в итоге?

я вот это имею ввиду:

Цитата:
словил непонятный глюк. Работоспособность проги зависит от порядка объявления переменных... Т.е.
float a;
int b;
работает, а:
int b;
float a;
валится с ошибкой Access violation... Просто меняю порядок следования двух соседних строк. Что это может быть?
Автор: mozgodrocha
Дата сообщения: 07.02.2008 20:53
akaGM

Я заболтил эту проблему. Не до этого сейчас, немного прогу подправил - вроде бы больше не падает.
Автор: mozgodrocha
Дата сообщения: 08.02.2008 15:01
И еще вопрос... Даже как-то стыдно спрашивать... Что-то мне ни как не собрать exe, чтобы не требовались dll. Все вроде бы сделал:
Build Configuration - Release
Dynamic RTL - убрал
Packages - Build whith runtime packages - убрал
exe как и положенно распух (с 69.0 KB до 1.66 MB), но без dll работать не хочет. Может в Builder'e 2007 еще что-то накрутить нужно? Что еще убрать/добавить чтобы все было нормально?
Автор: vidic777
Дата сообщения: 08.02.2008 22:33
mozgodrocha

Цитата:
Что-то мне ни как не собрать exe, чтобы не требовались dll

Не стыдно Я тоже присоединяюсь к вопросу как собрать в Builder'e 2007 но не токо *.dll но и *.bpl

Заранее благодарен.
Автор: afiget
Дата сообщения: 10.02.2008 13:48

Цитата:
Packages - Build whith runtime packages - убрал

А не наоборот?
Автор: mozgodrocha
Дата сообщения: 10.02.2008 16:31
afiget
Вроде бы нужно в Project->Configuration Manager->Configuration Name выбрать Release. C разными проектами не экспериментировал, но один собрался правильно.

Народ, что-то мне туго дается переход с С на С++... Подскажите, как правильно организовать такую прогу - прога должна:
--читать инфу из текстового файла;
--отображать инфу на графиках;
--обрабатывать инфу, и результат отображать на графиках (при этом пользователь может менять параметры обработки);
--обработка может вестись несколькими методами (метод выбирает пользователь);
--ну и сохранять результат в файл.

Как это сделать на С - понятно. А вот как все это грамотно оформить в Builder'e я что-то не догоняю. Я все это сделал. Но. Сделал практически все методами чистого С. Получилось все очень некрасиво и лохмато. Все перечисленные пункты выполняются С-функциями, а данные из текстового файла прямиком загружаются в каналы TSLScope (PlotLab). Т.е. получается, что все построено вокруг TSLScope. Из него все берется, в него все скидывается. Плюс ко всему еще и глобальные переменные есть. Работает все быстро, но хочется все сделать по-человечески. А вот как не совсем понятно. Например, где хранить прочитанную из файла инфу? По идее класс должен быть изолирован, и хранить данные в своих переменных, но мне же нужно выводить графики на TSLScope. А если все скидывать и в переменные класса и в каналы TSLScope все будет работать медленно. Как быть? Что чем реализовать? И где хранить данные? Что-то меня вся эта интерактивность в тупик заводит.
Автор: afiget
Дата сообщения: 12.02.2008 12:53

Цитата:
данные из текстового файла прямиком загружаются в каналы TSLScope

И там хранятся? Тогда зачем их хранить еще где-то? Или нет доступа к загруженным в TSLScope данным извне (для повторной обработки)?
http://mitov.newsgrouphosting.com/mitov.products.plotlab.vcl/19/How-to-pull-data-from-TSLScope.html

Страницы: 12345678910111213141516171819202122232425262728

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


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