[C++ Builder 6] Jak przekazać TEdit referencją?

0

ave!

Mam problem, który jest prawdopodobnie tak prosty, że nikt o tym nie mówi :) Literatura albo opisuje referenencje typów prostych, albo klas w czystym C++. A mi chodzi o Borlandowskie obiekty.

Chciałbym użyć referencji podczas przekazywania do funkcji obiektu typu TEdit (jako parametru). To ma być po to, żeby ta jedna funkcja mogła zmieniać zawartość wielu różnych pól Edit bez dublowania kodu.

Na wskaźnikach całość wygląda tak, jak poniżej i normalnie mi działa (napisałem taki prościutki przykład, ale wiadomo - trudniejsze też zadziałają :) ). Chciałbym zamiast wskaźnika mieć tam referencję. Nie wystarczy do tego zmienić * na &. Pewnie trzeba coś jeszcze.

Powiedzmy, że na formie mam Edit1 i Button1.

Jak to przepisać, żeby użyć referencji?

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int zmien (TEdit *okno);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
zmien (Edit1);
}
//---------------------------------------------------------------------------
int zmien (TEdit *okno)
{
okno->Text = '9';
return 0;
}

Jestem zaskoczony. Nikt jeszcze nie odpowiedział. A przecież pytanie było bardzo proste i wyraziłem się maksymalnie jasno. Chodzi o to, jak w podanym banalnym przykładzie zastąpić wskaźnik referencją.

Nikt mnie też nie zwyzywał, że mam poczytać FAQ, manuale, książki, zajrzeć na google itd. itp.

Może to znaczy, że jednak nie jest to temat do Newbie, tylko do dedykowanego forum o C++.

Czy można prosic moratora o przeniesienie?

0

a) sam możesz przenieść, wystarczy wyedytować pierwszy post i wybrać Forum
b) nie rozumiem
c) zmień temat bo stronę zepsułeś

0
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  zmien (*Edit1);
}
//---------------------------------------------------------------------------
int zmien (TEdit &okno)
{
  okno.Text = '9';
  return 0;
}

0

hmmm, dopiero teraz przeczytałem wszystko od początku.

0x666 - dzięki za informację. Sprawdziłem sobie i działa. Sprawdzałem też dla bardziej fikuśnych operacji i też działało. Jedyne, co się zmienia, to użycie kropki albo strzałki. No ale nie wiedziałem o tym wcześniej.

Z mojej strony uważam temat za zamknięty.

dziękuję i pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1