[MEGOLDVA] borland c, nem értem a problémát

 ( emberk | 2008. június 24., kedd - 15:46 )

Sziasztok!

A helyzet a következő.
van egy gomb amit ha megnyomok végrehalytódik egy eljárás. ez a következő képp néz ki.

void __fastcall TForm1::Button13Click(TObject *Sender)
{
detect2();
}

a detect függvény (helyesebben eljárás mert void):
void detect2 ()
{
..............
} szóval nem komplikált.

a detect2-nek szüksége van 2 további eljárásra amyalek a következő módon vannak létrehozva.

void alak (Graphics::TBitmap* bm)
{
........
}
//a b egy Tbitmap, mert képanalízist csinálok. nincs kedven folyton hurcolni mindenhova ezért globárisra deklarálom. lehet nem a leg legánsabb, de praktikus.Így:
Graphics::TBitmap* b = new Graphics::TBitmap(); ezt kaja meg a bm.

void ujfiuk ()
{
........
}

ha a bármely függvényt gombnyomásra hívok akkor frankón lefutnak. ha a függvény hívja a második függvényt ami neki kell akkor azt a hibaüzit kapom, hogy nem deklarált függvényhívás. Na ez a hívogatás ANSI-cben simán működik. Itt is biztosan van rá megoldás, hogy ne kelljen egy hatalmas mamutot csinálnom copy-paste-vel (bemásolom a függvények tartalmát a hívás helyéra akkor is megy, de akkor lesz vagy 2000000-soros a kód).

Ötlet valakinek?

Ui: Ja ha bent vannak a headerben, ha nem, ha public, ha private, ugyanez a helyze.
UI2: Gondoltam, hogy én rontottam el, és így is volt. Mindegyiket az újfiú, és az alak, is jól volt deklarálva, a detect2 viszont nem ugyanis 2 ablakom van a detect2 az a 2.-formhoz volt hozzácsapva. Mindenkinek nagyon köszönöm.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

ha beteszed a detect2 függvény deklarációját a TForm1::Button13Click elé?
void detect2 ();
szerk: az őt hívó függvény elé

MIt hova? Nem értem. A detect2 az megy, de a detect2 hívja az újfiút, az újfi az alakot, valamint a detect2-közvetlenűl az alakot is na ez a 2 függvény deklarálatlan szerinte, a detect2 rendben van.

Először: ez nem C, hanem a C++.
Másodszor: A borland gyárt C++ fordítót? :) (na jó csak viccelek)

Ha azt írja, hogy nem deklarált fv hívás, akkor valami nem stimmel. Vagy a láthatóság nem jó, vagy elírtál valamit, esetleg nincs fv deklaráció a hívás előtt. (Nem az egész fv (definíció), csak a deklaráció.)

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

nem elég ha a headerben deklarálom public-ként?
public:
void ujfiuk ();
void alak (Graphics:Tbitmap bm);

Ezek most ugyanazon classon belül vannak deklarálva? Esetleg class member és sima függvény keveredés van?

Ugyanabban a class-ban vannak.

Részlet a headerből (FrameCapture.h):

class TForm1 : public TForm
{
__published: // IDE-managed Components
TImage *Image1;
TGroupBox *GroupBox2;
TButton *Button6;
.....
.....
.....
TShiftState Shift, int X, int Y);
void __fastcall Button13Click(TObject *Sender);
private:
public:
__fastcall TForm1(TComponent* Owner);
void __fastcall alak (Graphics::TBitmap* bm);
void __fastcall ujfiuk ();
void __fastcall detect2 ();
};

És amikor definiáltad, akkor valahogy így írtad:

TForm1::alak (Graphics::TBitmap* bm){
...
}
TForm1::ujfiuk (){
...
}

Egész pontosan így:

void __fastcall TForm1::ujfiuk ()
{
double ccc=0.0;
for (int i=0 ; i {
Alak2[11][i]=Alak2[8][i];
Alak2[12][i]=Alak2[9][i];
Alak2[13][i]=100.0;
Alak2[14][i]=0.0;
}
int e_global_klaszterszam=global_klaszterszam;
...............
...............
...............
Alak2[14][newboy]=1.0; //megjelölése ök az újfiúk.
k++;
}
}

nem tudok pontosan vbeilleszteni mert úgy látszik akad a html-kódolással bocsi szóva a for ciklus feltételének van vége is.

"nem tudok pontosan vbeilleszteni mert úgy látszik akad a html-kódolással bocsi szóva a for ciklus feltételének van vége is."

Rakd [code] [/code] közé...

Most akkor megoldódott vagy sem?

Egyébként miért használsz te Borlandot? Mert ezekből a kódrészletekből látszik, hogy elég undorító megoldásokkal operál, ami főleg egy kezdő számára rossz példa, és kb lehetetlenné teszi a mélyebb megértést...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

A cégnél ez van, én meg fizikus vagyok, és nem programozó, eddig csak magamnak kódolgattam csak linux alá (és semmi gui mert neklem az nem kellett, ha kép kellet akkor pnm lett, az is asci), itt meg nincs más választás. Ezt cask most tanulom. De valóban nem tetszik.

Dobd ki a borland c-t a p*aba, a gcc jobb kodot general, van winre, linre, mindenre. Ja, es tok free.

Eddig azt használtam én is (ha gui kellet akkor ultimate++, mert nagyon pöpec kis cucc, kár hogy nem igazán közkedvelt, és gtk-s, de remek), de van egy videocapture-komponens ami cask borland-al működőképes. Nekem meg se kedvem, se tudásom videograbber komponenst írni, pláne win alá, ahol azt sem tudom, hogy mi a fene a hardverelérés, mert lin esetében /dev/videoX, és kész.

Most akkor működik vagy sem?

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Igen működik, én voltam bamba. Szóval rossz helyre deklaráltam a detect2()-t.