[C++ Borland Builder] - wlasne funkcje odnoszace sie do obiektow.
Ostatnio zmodyfikowano 2017-08-15 08:09
R0P Temat założony przez niniejszego użytkownika |
[C++ Borland Builder] - wlasne funkcje odnoszace sie do obiektow. » 2017-08-14 21:52:20 *** Brak polskich znakow po jestem w NL i laptop mam ustawiony na EN *** Hej. Otoz sprawa wyglada tak. Chce wykorzystac np. on-clicka podpiete do obiektu stworzonego w Borlandzie - np. buttona - ktory ma cos tam robic. Zeby bylo czytelniej szybciej i wygodniej chce podac w tym on-clicku nie kod jakiegos dzialania lecz funkcje zrobiona wlasnorecznie. Niestety owa nie czyta np. pobrania z czy wczytania do obiektu gdyz tego obiektu nie widzi. Domyslam sie ze to kwestia przekazania funkcji klasy i obiektu jako parametrow i uzycie ich w jej ciele. Niestety probojac ratowac sie wczoraj google i artykulami tam znalezionymi - nie dalo rady - nie moge za nic zrozumiec, wszystko wydaje mi sie metne i pogmatwane. Dlatego wrzucam tutaj kod super prostego programu - jeden przycisk i jedno pole. On-click przycisku wywoluje moja wlasna funkcje ktora ma wstawic wartosc do pola. Licze nie tylko na pomoc w rozwiazaniu ,ale na merytoryczne wytlumaczenie co, jak i czemu. PLIK .CPP #include <iostream> #include <vcl.h> #pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init) #pragma resource "*.dfm"
using namespace std;
TForm1 * Form1;
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner ) { }
void wstaw_liczbe() { int a = 5; pole->Text = a; cout << a; } void __fastcall TForm1::przyciskClick( TObject * Sender ) { wstaw_liczbe(); }
PLIK .H
#ifndef Unit1H #define Unit1H
#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp>
class TForm1 : public TForm { __published: TButton * przycisk; TEdit * pole; void __fastcall przyciskClick( TObject * Sender ); private: public: __fastcall TForm1( TComponent * Owner ); };
extern PACKAGE TForm1 * Form1;
#endif
Z gory dzieki sliczne. |
|
mateczek |
» 2017-08-14 21:59:30 tak nie zadziała to się kłóci z programowaniem obiektowym. najprościej zrób z funkcji metodę klasy.
#ifndef Unit1H #define Unit1H
#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp>
class TForm1 : public TForm { __published: TButton * przycisk; TEdit * pole; void __fastcall przyciskClick( TObject * Sender ); private: void wstaw_liczbe(); public: __fastcall TForm1( TComponent * Owner ); };
extern PACKAGE TForm1 * Form1;
#endif
#include <iostream> #include <vcl.h> #pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init) #pragma resource "*.dfm"
using namespace std;
TForm1 * Form1;
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner ) { }
void __fastcall TForm1::wstaw_liczbe() { int a = 5; pole->Text = a; cout << a; } void __fastcall TForm1::przyciskClick( TObject * Sender ) { wstaw_liczbe(); }
|
|
R0P Temat założony przez niniejszego użytkownika |
Niestety nie dziala » 2017-08-14 22:16:32 Wyskakuja takie bledy.
[C++ Error] Unit1.cpp(22): E2356 Type mismatch in redeclaration of 'TForm1::wstaw_liczbe()' [C++ Error] Unit1.h(19): E2344 Earlier declaration of 'TForm1::wstaw_liczbe()'
|
|
mateczek |
» 2017-08-14 22:20:16 to może tak ?? nie urzywam buildera ale to musi jakoś tak wyglądać. void TForm1::wstaw_liczbe() { int a = 5; pole->Text = a; } a komunikaty mi się wydają jakbyś miał coś zdublowane !!! |
|
R0P Temat założony przez niniejszego użytkownika |
Juz lepiej... » 2017-08-14 22:24:40 Ale niestety nadal blad, tym razem chyba bez zwiazku:
[Linker Fatal Error] Fatal: Expected a file name:
|
|
R0P Temat założony przez niniejszego użytkownika |
Nadal nic... » 2017-08-14 22:40:36 Po stworzeniu nowego projektu i napisaniu identycznego programu (z tym ze teraz nie zmienilam nazwy pola i buttona wiec mam Edit1 i Button1) dostaje identyczny blad: [Linker Fatal Error] Fatal: Expected a file name: .CPP
#include <vcl.h> #pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init) #pragma resource "*.dfm" TForm1 * Form1;
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner ) { }
void __fastcall TForm1::Button1Click( TObject * Sender ) { wstaw_liczbe(); }
void TForm1::wstaw_liczbe() { int a = 5; Edit1->Text = a; }
.H
#ifndef Unit1H #define Unit1H
#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp>
class TForm1 : public TForm { __published: TEdit * Edit1; TButton * Button1; void __fastcall Button1Click( TObject * Sender ); private: void wstaw_liczbe(); public: __fastcall TForm1( TComponent * Owner ); };
extern PACKAGE TForm1 * Form1;
#endif
|
|
mateczek |
» 2017-08-15 08:09:03 weź stwórz projek pod jakąś prostą nazwą. Bez spacji polskich znaków i bez znaków specjalnych np D:/programy/test i spróbuj skompilować |
|
« 1 » |