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

» FAQ по Borland C++ Builder

Автор: vudik
Дата сообщения: 09.05.2009 17:29
а как описать непосоветуеш... ???я некак ...
спасиба большое Meister Floh

Добавлено:
я сколько таких примеров не находил, везде такое самое
Автор: Meister Floh
Дата сообщения: 09.05.2009 17:34
попробуй из private перенести в public в таком виде:

Код:
void __fastcall Grafik(void);
Автор: vudik
Дата сообщения: 09.05.2009 17:46
СПАСИБО ОЧЕНЬ БОЛЬШОЕ
вроде тепер все нор. строит, но я float f( float x); нетрогал, просто мне нужно это реализовать для нескольких функцый, по выбору пользователя... а это просто я вхяну за основу..

спасибо большое

Добавлено:

Цитата:
вхяну

взял

Автор: Meister Floh
Дата сообщения: 09.05.2009 17:58
vudik
Не стоит благодарности. Кроме того если функция нужна для нескольких проектов она пишется в отдельном модуле и отдельном файле хедере - создается из всего этого библиотека, которая подключается в другом проекте.. А в том виде в котором у тебя все это представлено, из другого проекта доступно не будет до тех пор, пока ты в последний не добавишь существующий - чем значительно увеличишь и замусоришь второй.. а если ты добавишь еще одну форму в этот проект, то, тогда эта функция все равно будет доступна, т. к. она описана в public и доступ будет выглядеть следующим образом:

Код:
float fTest = Form1->f(x);
Автор: vudik
Дата сообщения: 09.05.2009 18:07
спасибо..
а может ты подскажэш и почему в меня график выводится прерывчасто, я и формулу поменял поставил просто х*х но оно при промтроении выводится прерывчасто, отрезками
Автор: Meister Floh
Дата сообщения: 09.05.2009 18:55
vudik
какая студия у тебя стоит? и еще в пм кинь свое мыло я тебе кину проект, который я собрал, посмотришь как он работать будет, у меня вроде нормально -
Автор: vudik
Дата сообщения: 09.05.2009 19:08
в меня builder 6.0..

мыло- vudu91@meta.ua
Автор: Meister Floh
Дата сообщения: 09.05.2009 19:27
vudik
отправил.. Правда есть одно но... Откроешь ли.. Но если проблема не решится попробуй уменьшить шаг при построении функции.. И прочитай чего-нить про сглаживание графиков при выводе на канву..
Автор: vudik
Дата сообщения: 09.05.2009 19:52
спс.. єто у меня чтото.. я на другом компе протєстил.. все норм
Автор: vudik
Дата сообщения: 10.05.2009 13:55
я знаю что наглостю так и прет ну всетаки помогите пожалуйста... я над этой прогой ни одни сутки уже сижу а толку 0.0%... усилиями Meister Floh, я розобрался с построением графика одной функции а как сделать чтобы можна пользователю выбирать
из нескольких и просто менять коэффициент, и выставлять границы не знаю, уже кучу всего перепробовал... одни ошибки вот то что работает
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}


void __fastcall TForm1::Grafik(void)
{
    float x1, x2;
    float y1, y2;
    float x;
    float y;
    float dx;
    int l,b;
    int w, h;
    float mx, my;
    int x0, y0;

    l = 10;
    b = Form1->ClientHeight-20;
    h = Form1->ClientHeight-40;
    w = Form1->Width - 20;

    x1 = 0;
    x2 = 2;
    dx = 0.00001;

    x = x1;
    y1 = f(x);
    y2 = f(x);

    do {
        y = f(x);
        if ( y < y1 ) y1 = y;
        if ( y > y2 ) y2 = y;
        x += dx;
    } while (x <= x2);

    my = (float)h/abs(y2-y1);
    mx = w/abs(x2-x1);

    x0 = l+abs(x1*mx);
     y0 = b-abs(y1*my);
    Canvas->MoveTo(x0,b);Canvas->LineTo(x0,b-h);
    Canvas->MoveTo(l,y0);Canvas->LineTo(l+w,y0);
    Canvas->TextOutA(x0+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
    Canvas->TextOutA(x0+5,b,FloatToStrF(y1,ffGeneral,6,3));

    x = x1;
    do {
        y = f(x);
        Canvas->Pixels[x0+x*mx][y0-y*my] = clRed;
        x += dx;
    } while (x <= x2);
}
float __fastcall TForm1::f( float x)
{ float a;
int v=1;
if(v==1)a=x*x;
if(v==2)a=sin(x);
return a;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Grafik();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
TRect rct = Rect(0,0,ClientWidth,ClientHeight);

    Canvas->FillRect(rct);
    Grafik();
}


#ifndef Unit1222H
#define Unit1222H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
TEdit *Edit1;
TButton *Button1;
void __fastcall FormResize(TObject *Sender);
void __fastcall FormPaint(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);

private:    // User declarations
public:        // User declarations
__fastcall TForm1(TComponent* Owner);
    void __fastcall Grafik(void);
     float __fastcall f(float x);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Автор: Meister Floh
Дата сообщения: 10.05.2009 18:02
vudik
Ну если заранее известен набор функций - то никаких проблем - в форме делаешь радиобуттон и передаешь твоей функции f(x) вторым элементом что из радиобуттон выбрано, в функции анализируешь второй параметр и исходя из этого возвращаешь, результат..

А вот если набор функций заранее не известен, тогда лучше воспользоваться маткадом (шутка) ну тогда все не так тривиально и нужно думать..
Автор: vudik
Дата сообщения: 10.05.2009 19:10
Meister Floh
а как зделать чтоб из радиобуттон возвращало значение... бо функция f(x) не видит мое а


Добавлено:

поехали дали, с этим разобрались...

Автор: Meister Floh
Дата сообщения: 11.05.2009 12:43
Коллеги, а кто пробовал Ribbon в 2009 студии? Чтот я не нашел как можно русифицировать меню в QAT может кто подскажет.. Хотелось бы использовать его, он менее замученый чем в девочках, да и размер исполняемого файла раза в 2 меньше получается..
Автор: vudik
Дата сообщения: 13.05.2009 17:53
помогите кто может, может кто знает как устранить проблему... буду рад любой инфе
дело в том что я сохраняю Image, файл создается все нормально но при загрузки этой картинки выскакует ошибка
вот коды

Код: if(SavePictureDialog1->Execute()){Image1->Picture->SaveToFile(SavePictureDialog1->FileName);
Автор: clear2121
Дата сообщения: 14.05.2009 10:14
Hi!
Создал свой класс. Использование в главной форме нормально, а во второй вызывает ошибку при линковке

Код: [ILINK32 Error] Error: Unresolved external '_WBase' referenced from D:\DEVELOP\S09_LAN\REDAKTOR_11\DEBUG\FREDSPRAV.OBJ
Автор: Tantos
Дата сообщения: 15.05.2009 02:31
clear2121
А если к проекту подцепить файл (Project->Add)?
Автор: clear2121
Дата сообщения: 15.05.2009 17:24
Tantos,
В том то и дело, что призываетцеплен. Класс у меня называется WBase, создаю в Form1

Код: WBase = new TWBase( Form1 );
Автор: akaGM
Дата сообщения: 15.05.2009 19:12
clear2121
ттут можно долго гадать и советы давать, код надо смотреть...
Автор: monsoon
Дата сообщения: 15.05.2009 21:03
При установке компонента не хватает 2-х файлов pas и на них ругается при компиляции, но есть соответствующие dcu.
Поискал в интернете советы пробовал по ним добавлять пути, добавлять в PFLAGS -LUимя_dcu
Все равно ошибки.
У кого-нибудь получалось их прикрутить?

Добавлено:
еще пробовал утилиту dcu2pas, но она конвертить не хочет, выдает ошибку.
Автор: akaGM
Дата сообщения: 16.05.2009 15:57
clear2121
а так как это -- ошибка линкера, то явно проект не видит конкретный .obj файл.
и, судя по всему, это именно обж с твоим классом...
Автор: vudik
Дата сообщения: 18.05.2009 20:56
добрый день...
у меня есть програма построения функций... спомощу канвы я собствено вывожу график на Image для этого у меня есть функция, ещо на этом Image я вывожу ось координат и сетку.. проблема в том что сетка мне нужно убирать и ставить назад но так чтобы все нанесены до этого графики остались, как это сделать незнаю. Подскажите кто может пожалуйста ...
я использува очистку Image

Код: PatBlt(Image1->Canvas->Handle,0,0,Image1->Width,Image1->Height,WHITENESS);
Автор: vudik
Дата сообщения: 20.05.2009 12:50
кто может знает где можно скачать книгу " Архангельский А.Я.    Программирование в C++Builder 6. 2-ое изд, 2005 г" очень надо ...
спасибо ..
Автор: Darl
Дата сообщения: 20.05.2009 14:47
vudik

http://torrents.ru/forum/viewtopic.php?t=1315547
http://torrents.ru/forum/viewtopic.php?t=1184507
http://torrents.ru/forum/viewtopic.php?t=1126658
и т.д.
Автор: vudik
Дата сообщения: 21.05.2009 20:29
Darl
спасибо большое...

подскажите пожалуйста а можно ли сделать в TChart чтобы ось Ох и Оу всегда пересекались в точке О(0;0) при любых минимальных и максимальных Х и У??
Автор: Meister Floh
Дата сообщения: 25.05.2009 11:50
Господа, а кто подскажет как правильно написать формочку без кнопок для прогресс бара, чтоб вывести ее модально? Как передавать данные в прогресс бар?
Автор: RedPromo
Дата сообщения: 25.05.2009 17:24
Meister Floh
Может через интерфейс самой формы, наиболее оптимальное решение.
Автор: gerome
Дата сообщения: 01.06.2009 12:59
А фирма Borland больше не делает новые версии среды програмирования С++ Borland? (6-ая версия уже давно вышла, а новых нет)

Добавил после получения ответа:
Meister Floh
Спасибо, я действительно отстал по этой части =)
Автор: Meister Floh
Дата сообщения: 01.06.2009 13:37
gerome
Мда.. похоже Вы не в теме Вот тут
Автор: valneformal
Дата сообщения: 04.06.2009 23:10
Ребята, помогите!
Есть dll. В ней функция

bool Run(String ip)
{
if (ip != "")
{
DWORD count;
HANDLE hFile;
String Data = ip;
String FilePath = "C:\\f.txt";
hFile = CreateFile(FilePath.c_str(),GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_NEW,0,NULL);
WriteFile(hFile,Data.c_str(),Data.Length(),&count,NULL);
CloseHandle(hFile);
return true;
}
return false;
}


Проблема: не создаётся файл!!! Этот же код но "по нажатию на кнопочку на форме" работает без проблем... В чём проблем может быть?


Добавлено:
Всем спасибо Проблему решил
Автор: Tantos
Дата сообщения: 05.06.2009 02:12
valneformal
Попробуй заменить bool Run(String ip) на bool Run(char* ip). При создании нового проекта dll не поленись почитать по поводу [more=памяти]
// Important note about DLL memory management when your DLL uses the
// static version of the RunTime Library:
//
// If your DLL exports any functions that pass String objects (or structs/
// classes containing nested Strings) as parameter or function results,
// you will need to add the library MEMMGR.LIB to both the DLL project and
// any other projects that use the DLL. You will also need to use MEMMGR.LIB
// if any other projects which use the DLL will be performing new or delete
// operations on any non-TObject-derived classes which are exported from the
// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases,
// the file BORLNDMM.DLL should be deployed along with your DLL.
//
// To avoid using BORLNDMM.DLL, pass string information using "char *" or
// ShortString parameters.
//
// If your DLL uses the dynamic version of the RTL, you do not need to
// explicitly add MEMMGR.LIB as this will be done implicitly for you
[/more].
Т.е. если хочешь использовать AnsiString/string, то огребешь сильно много геморроя (это если упрощенно ).

Страницы: 12345678910111213141516171819202122232425262728

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


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