Mehrfach instanzen oder was?
-
hey leute

ich grüble hier schon eine halbe ewigkeit rum wie ich folgendes problem lösen kann. ich schreibe an einem programm das e-mail accounts auf neue e-mails überprüfen soll. leider scheitere ich an der dynamischen account erstelung.
gedacht hatte ich das mit einer klasse von der ich dann pro account eine instanze erstelle. also jeder account kriegt sein eigenes object einer basis klasse. die basis klasse hat elemente wie benutzername, passwort, server, port, eine mail ID liste (z.B. TStringList) etc. mein problem ist nun wie erstelle ich pro account eine instanz. wie greife ich auf die betroffene instanz zu und wie lösche ich die betroffene instanz. etc.
in einer listbox wird die email adresse des hinzugefügten account dem benutzer angezeigt. ich könnte mich nun anhand des listbox Count orientieren da ich dort weis wieviele accounts der benutzer hat. aber wie ich nun die klassen objekte pro account erstelle, bearbeite, drauf zugreife oder wieder lösche, ist mir schleierhaft.
anbei mal ein bisschen code:
Die klasse
class BaseMailMain { public: BaseMailMain(); ~BaseMailMain(); char *Username; char *Password; char *MailAddress; char *POP3Server; int Port; private: int MessageCount; TStringList *MailMessageIDList; };Der programteil
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; BaseMailMain *Account; int CurrentObject; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- BaseMailMain::BaseMailMain() { } //--------------------------------------------------------------------------- BaseMailMain::~BaseMailMain() { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Account[CurrentObject].Username = Edit1->Text.c_str(); Account[CurrentObject].Password = Edit2->Text.c_str(); Account[CurrentObject].MailAddress = Edit3->Text.c_str(); Account[CurrentObject].POP3Server = Edit4->Text.c_str(); Account[CurrentObject].Port = StrToInt(Edit5->Text); ListBox1->Items->Add(Edit3->Text); CurrentObject++; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { CurrentObject = 0; BaseMailMain *Account = new BaseMailMain[ListBox1->Items->Count]; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { delete[] Account; } //---------------------------------------------------------------------------wie soll ich das am besten lösen?
-
Hallo
Mach dir erstmal Gedanken, die du die Account-Daten intern verwalten und dann fest speichern willst (Du willst ja nicht bei jedem Programmstart die Kontodaten neu eingeben, oder?). Ich rate zu einem DynamicArray (oder auch std::vector) von BaseMailMain. Dann kannst du anfangen, Routinen zum Lesen und Schreiben der Daten aus/in eine Datei zu schreiben.
Bist du dann soweit, brauchst du immer nur noch eine neue Instanz von BaseMailMain in das dynamische Array neu hinzuzufügen.bis bald
akari