(Часть 2) Я начинающий, подскажите пожалуйста как...
Прежде чем задать вопрос здесь, вы обязаны использовать
- Поиск по форуму, используя ключевые слова из вашего вопроса. Как правильно использовать поиск - читайте здесь
- Список наиболее часто задаваемых вопросов (FAQ)
- Поиск по предыдущей теме
Кроме того, прежде чем размещать сообщение, ознакомьтесь с правилами.
При размещении вопросов начинающих помимо указанной темы, будет выдаваться нарушение, а тема удаляться.
[C++ Error] Unit1.cpp(67): E2451 Undefined symbol 'IHTMLDocument2'
[C++ Error] Unit1.cpp(67): E2299 Cannot generate template specialization from 'TComInterface<T,piid>'
[C++ Error] Unit1.cpp(67): E2379 Statement missing ;
[C++ Error] Unit1.cpp(68): E2451 Undefined symbol 'IID_IHTMLDocument2'
[C++ Error] Unit1.cpp(68): E2451 Undefined symbol 'pDocument'
[C++ Error] Unit1.cpp(68): E2285 Could not find a match for 'IUnknown::QueryInterface(undefined,undefined)'
[C++ Error] Unit1.cpp(72): E2451 Undefined symbol 'IHTMLElementCollection'
[C++ Error] Unit1.cpp(72): E2299 Cannot generate template specialization from 'TComInterface<T,piid>'
[C++ Error] Unit1.cpp(72): E2379 Statement missing ;
[C++ Error] Unit1.cpp(73): E2451 Undefined symbol 'pCollection'
[C++ Error] Unit1.cpp(82): E2451 Undefined symbol 'IHTMLElement'
[C++ Error] Unit1.cpp(82): E2299 Cannot generate template specialization from 'TComInterface<T,piid>'
[C++ Error] Unit1.cpp(82): E2379 Statement missing ;
[C++ Error] Unit1.cpp(83): E2451 Undefined symbol 'IID_IHTMLElement'
[C++ Error] Unit1.cpp(83): E2451 Undefined symbol 'pElement'
[C++ Error] Unit1.cpp(83): E2285 Could not find a match for 'IUnknown::QueryInterface(undefined,undefined)'
#include "mshtmcid.h"
#include <atl\atlvcl.h>
[C++ Warning] atlwin.h(1579): W8017 Redefinition of 'MESSAGE_HANDLER' is not identical
если убрать #include <vcl.h> то начинают выскакивать ошибки в *.h файлах.
[C++ Warning] atlwin.h(1579): W8017 Redefinition of 'MESSAGE_HANDLER' is not identical
если убрать #include <vcl.h> то начинают выскакивать ошибки в *.h файлах.
#include "mshtml.h"
#include "mshtmhst.h"
#include "mshtmcid.h"
#include "atlbase.h"
#include "SHDocVw_OCX.h"
больше ничего не должно требовать..
на варнинг забей
Мне нужно отфильтровать записи через поле ввода по выбранному столбцу(ComboBox)..
Я сделал поиск, он ищет первую похожую запись и останавливается на ней.. как сделать чтобы он находил все похожие записи а все остальные скрывал ? Есть TADOTable, DBGrid. Если можно, код..
Вот что у меня есть:
{
Variant localvalues;
TLocateOptions Opts;
Opts.Clear();
Opts << loCaseInsensitive << loPartialKey;
ADOTable1->Locate(ComboBox1->Text,Edit1->Text,Opts);
}
Хочу обратить внимание - не нужно делать замечаний в темах - используйте кнопку "сообщить модератору". Оба сообщения удалены.
А теперь по делу (ато еще забанят :) ). Интерисует вывод на печать. Компоненты QReport работают с базами данных (на сколько я понял), а мне надо расспечатать текст который содержится в Memo или таблицу StringGrid.
Нашел следуюий код:
prn->BeginDoc();
//дальше рисуешь на prn->Canvas
prn->EndDoc()
delete prn;
В принципе все понятно, только я не разобрался как рисовать в Canvas. Подскажите пожалуйста!
А теперь по делу (ато еще забанят :) ). Интерисует вывод на печать. Компоненты QReport работают с базами данных (на сколько я понял), а мне надо расспечатать текст который содержится в Memo или таблицу StringGrid.
Нашел следуюий код:
prn->BeginDoc();
//дальше рисуешь на prn->Canvas
prn->EndDoc()
delete prn;
В принципе все понятно, только я не разобрался как рисовать в Canvas. Подскажите пожалуйста!
{
TPrinter Prntr = Printer();
TRect r = Rect(200,200,Prntr->PageWidth – 200,Prntr->PageHeight – 200);
Prntr->BeginDoc();
Prntr->Canvas->TextRect(r, 200, 200, Memo1->Lines->Text);
Prntr->EndDoc();
}
Простейший код по идентификации дочерних классов:
[highlight=cpp]
//---------------------------------------------------------------------------
#pragma hdrstop
#include <typeinfo>
#include <iostream>
#include <stdlib.h>
using namespace std;
//---------------------------------------------------------------------------
class Figure
{
public:
char f;
};
class Circle: public Figure
{
public:
char c;
};
class Square: public Figure
{
public:
char s;
};
Figure* factory()
{
switch(rand()%2)
{
case 0:
cout << "Circle class object created. RTTI:\t";
return new Circle;
case 1:
cout << "Square class object created. RTTI:\t";
return new Square;
//default: return new Figure; //:)
}
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
Figure* test=NULL;
for(register int i=0; i<10; i++)
{
test=factory();
cout << "Object type:\t" << typeid(*test).name() << endl;
delete test;
test=NULL;
}
return 0;
}
//---------------------------------------------------------------------------[/highlight]
Но результат всегда выдает родительский класс!!! Что за???
[highlight=cpp]
class Figure
{
public:
char f;
virtual ~Figure() {}
};
class Circle: virtual public Figure
{
public:
char c;
};
[/highlight]
Все непонятки, почему RTTI не работает без виртуальных функций.
Все непонятки, почему RTTI не работает без виртуальных функций.
На самом деле, так и должно быть. Вспомним особенности размещения в памяти. Если в классе имеются виртуальные функции (класс полиморфен), то у него есть таблица виртуальных функций, в которую-то и можно вставить информацию о классе. У не полиморфных такую информацию добавить некуда. Попробуй применить операцию sizeof для Figure без виртуальных функций и хотя бы с одной(например, деструктором). Разница в размерах - это размер указателя на таблицу.
Мне нужно преобразовать символ числа в число целого типа, уже второй день мучаюсь!
int b=(int)a-48;
Builder захлопывается при попытке показать окошко автозавершения кода (Code Insight, по моему), иногда матерится страшными словами - Access violation в модуле hw_hook.dll , не хочет компилировать
не знаю в чем причина, началось после того как добавил строчку #include <Registry.hpp> и соответсвенно пытаюсь тут с реестром поработать
--------
вот же е мое
если #include <Registry.hpp> поместить в cpp часть модуля, система начинает выдавать сказочные глюки, переместил в h часть , все нормально
Какие библиотеки помимо подключены?
Какие библиотеки помимо подключены?
версия 6.0 (Build 10.157)
ничего особенного , обычный проект , новая строчка только #include <Registry.hpp>
в зависимости от того куда я ее включаю , результаты интересные
unit1.cpp, вот так глючит
#include <Registry.hpp>
#pragma hdrstop
#include "Unit1.h"
unit1.h, так нормально
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Registry.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
Есть Edit1, нужно разрешить в него ввод цифр и ОДНО точки для дробных чисел, а все остальное запретить.
Спасибо
P.S. не пишу на C++ Builder, поэтому не знаю такого елементарного
Есть Edit1, нужно разрешить в него ввод цифр и ОДНО точки для дробных чисел, а все остальное запретить.
Спасибо
P.S. не пишу на C++ Builder, поэтому не знаю такого елементарного
И в FAQ не смотришь?
Там только int! Я писал о float!
Все сам разобрался, спасибо за подсказки
см. ф-ции:
fread - чтение
fwrite - запись
fopen - открытие
TStream::Read
TSream::Write
CreateFile
ReadFile
WriteFile
TButton1 нажимаю на нее два раза и вписываю в код следующее->>
Код:
CopyFile(OldName.c_str(),NewName.c_str(),false);
Но мне нужно чтобы программа работала не в оконном ружиме.
Как мне составить туже программу но чтобы она работала консольно.
Невыдавала Окна, и работала программно.
TButton1 нажимаю на нее два раза и вписываю в код следующее->>
Код:
CopyFile(OldName.c_str(),NewName.c_str(),false);
Но мне нужно чтобы программа работала не в оконном ружиме.
Как мне составить туже программу но чтобы она работала консольно.
Невыдавала Окна, и работала программно.
File|New|Console Wizard
Чтобы во время переименовывания в имя нового файла
подставлялась системная дата.
Код:
CopyFile(OldName.c_str(),NewName.c_str(),false);
В моем примере Файл с названием DirFile.txt копируется и переименовывается в DirFile1.txt. Вот вопрос стоит в том,
чтобы файл переименовывался из DirFile.txt в 10-05-08.txt (где 10 - День, 05 - месяц, 08-Год)
Чтобы во время переименовывания в имя нового файла
подставлялась системная дата.
Код:
CopyFile(OldName.c_str(),NewName.c_str(),false);
В моем примере Файл с названием DirFile.txt копируется и переименовывается в DirFile1.txt. Вот вопрос стоит в том,
чтобы файл переименовывался из DirFile.txt в 10-05-08.txt (где 10 - День, 05 - месяц, 08-Год)
Now().DateString() + AnsiString(".txt");
Если конечно не трудно
CopyFile(OldName.c_str(), NewName.c_str(),false);
Ошибка:
[C++ Ошибка] Unit1.cpp(11): E2451 Undefined symbol 'OldName'
Незнаю все перепробовал...:mad:
Подскажите народ Plzzz....:o
Ошибка:
[C++ Ошибка] Unit1.cpp(11): E2451 Undefined symbol 'OldName'
Незнаю все перепробовал...:mad:
Подскажите народ Plzzz....:o
AnsiString OldName = "C:\\Dirfile.txt";
AnsiString NewName = ExtractFilePatch(OldName) + "\\" + Now().DateString() + ".txt"
CopyFile(OldName.c_str(), NewName.c_str(),false);
AnsiString NewName = "C:" + ???????????? + ".txt";
Вместо вопросов необхадимо подставить какуюто(неизвестную мне)
функцию для того чтобы конечное название этого файла в коде
выглядело так: "C:14-05-08.txt". Где 14 - день, 05-месяц, 08 - год.
Так чтобы в имя текстового файла программа вставляла сегодняшнюю дату, без времени.
Вот код программы:
AnsiString OldName = "C:1.txt";
AnsiString NewName = "c:" + ?????????? + ".txt";
CopyFile (OldName.c_str(),NewName.c_str(),false);
Подскажите кому нетрудно....
AnsiString NewName = "c:" + ?????????? + ".txt";
[\CODE]
Подскажите кому нетрудно....
Обсуждение по данной теме закрыто. все что могли тебе уже подсказали и привели работающий код. дальнейшая попытка пережевывать одно и тоже приведет к выдаче очередного нарушения за нарушение правил топика.
Все.
P.S. Попытка обсуждать в топике - так же учились все остальные или не так же, а что такого и что не такого - это конечно путь воина. Учитывая что нарушения не однократные - этот путь нелегок. Сообщение удалено - доступ пользователя на форум ограничен на 7 дней.
Ещё, можете сказать в чём ошибка
#include <basepch.h>
#include <vcl.h>
#include <windows.h>
#include <cv.h>
#include <highgui.h>
#include <IplConverter.h>
#pragma hdrstop
#pragma package(smart_init)
//---------------------------------------------------------------------------
// Package source.
extern "C" __declspec(dllexport) void FindContours(Graphics::TBitmap &bmp, Graphics::TBitmap outputBmp, int threshould1, int threshould2);
//---------------------------------------------------------------------------
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
//---------------------------------------------------------------------------
void FindContours(Graphics::TBitmap &bmp, Graphics::TBitmap outputBmp, int threshould1, int threshould2)
{
IplImage *image = TBitmapToIplImage(&bmp);
IplImage *convertedImage = cvCreateImage( cvSize(image->width, image->height), image->depth, 1 );
cvSetImageCOI( image, 2 );
cvCopy( image, convertedImage, 0 );
cvCanny(convertedImage, convertedImage, threshould1, threshould2, 3 );
IplImageToTBitmap(convertedImage, &outputBmp);
}
[Linker Error] Unresolved external '__fastcall Graphics::TBitmap::GetScanline(int)' referenced from D:\CAVALERA\GSCAN3(TESTING)\CONTOURFINDER(OPENCV)\PACK\PACK\PACKAGE1.OBJ
[Linker Error] Unresolved external '__fastcall Graphics::TBitmap::SetPixelFormat(Graphics::TPixelFormat)' referenced from D:\CAVALERA\GSCAN3(TESTING)\CONTOURFINDER(OPENCV)\PACK\PACK\PACKAGE1.OBJ
Пакет создается File|New|Package, функцию пишешь как обычно ручками, а вот дальше нифкурил. Объясни чего имел ввиду "и во время разработки программы вызвать её из пакета".
По поводу вызова из пакета: для использования функции нужно установить пакет и потом в коде писать функцию из этого пакета?
Если хочешь "и во время разработки программы вызвать её из пакета", то нужно организовать взаимодеиствие со средой (IDE) через реализацию одного из ее интерфейсов (IOTAWizard, IOTAMenuWizard и т.п.). Кстати ты "не установишь пакет" не реализовав и не зарегестрировав Wizard. Т.о. можно добавить пункт меню в Меню Билдера Help (и не только туда), организовать отклик на нажатия горячей клавиши, добавить кнопки на сущ. панели или создать свою панель в IDE и т.д. у Билдера очень гибкая IDE. Кое-что можно посмотреть в папке $(BCB)\Examples\ToolsAPI или Здесь
По поводу вызова из пакета: для использования функции нужно установить пакет и потом в коде писать функцию из этого пакета?
Будьте так любезны - ознакомтесь пожалуйста со списком наиболее часто задаваемых вопросов - он пишется в первую очередь для ньюбов - так вот в старом ФАКе это вопрос номер 16. По поводу работы с пакетами - пакадж - по сути это динамически вызываемая библиотека (DLL) и работа с ней подчиняеться общим правилам работы с динамически загружаемымми библиотеками.
Причём ошибка вылазит даже при запуске (F9) старых прог, которые работали нормально... Но если билдить проект, и запускать *.exe файл, то он работает, и только при попытке выхода из него матюгаецца, и предлагает отправить отчёт маленькому-мягкому...
AnsiString FORM_CAPTION = ini->ReadInteger("APPLICATION", "FORMCAPTION", "Form1");
delete ini;
ShowMessage(FORM_CAPTION); //Пустое сообщение
ShowMessage(FORM_CAPTION); //Уже не пустое - содержит Form2, т.е. строка считана успешно из ini-файла
Итак, суть проблемы...
У меня в Ini-файле около 600 строк. FORM_CAPTION пусть будет на самой последней строке.
Получается, что если убрать ShowMessage вообще, то FORM_CAPTION имеет "ничего" - пустое значение.
Если оставить, то тоже пустое значение. Но вот второй ShowMessage уже будет иметь значение.
Получается, что есть какая-то задержка с выполнением этой функции. Т.е. форма показывается, загружаются около 200 строк (значений), а остальные подгружаются уже после показа формы...
Пробовал
Прога попросту висит...
Как тут быть?