[C++/BCB]Prosty edytor tekstu,problem z umożliwieniem zapisywania/wczytywania dokumentów

0

Witam, mam problem z pewnym programem, w Was ostatnia nadzieja.

Nagłówek:

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Buttons.hpp>
#include <Menus.hpp>
#include <ActnList.hpp>
#include <ImgList.hpp>
#include <ToolWin.hpp>
#include <Dialogs.hpp>
#include <string>
#include "Unit2.h"
#include "Unit4.h"

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TPageControl *PageControl1;
        TMainMenu *MainMenu1;
        TMenuItem *Plik1;
        TMenuItem *mZapisz;
        TMenuItem *mWczytaj;
        TMenuItem *Zamknij1;
        TMenuItem *OProgramie1;
        TMenuItem *Nowakarta1;
        TToolBar *ToolBar1;
        TImageList *ImageList1;
        TToolButton *ToolButton1;
        TMenuItem *Zamknijkart1;
        TButton *btnWczytaj;
        TOpenDialog *OpenDialog1;
        TButton *btnZapisz;
        TToolButton *ToolButton2;
        TSaveDialog *SaveDialog1;
        TActionList *ActionList1;
        TAction *acnZamknij;
        void __fastcall DodajZakladke(TPageControl *PageControl1);
        void __fastcall BitBtn1Click(TObject *Sender);
        void __fastcall ToolButton1Click(TObject *Sender);
        void __fastcall ToolButton2Click(TObject *Sender);
        void __fastcall OProgramie1Click(TObject *Sender);
        void __fastcall Zamknijkart1Click(TObject *Sender);
        void __fastcall Nowakarta1Click(TObject *Sender);
        void __fastcall Wczytaj(TPageControl *PageControl1);
        void __fastcall btnWczytajClick(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall mWczytajClick(TObject *Sender);
        void __fastcall btnZapiszClick(TObject *Sender);
        void __fastcall Zapisz(TPageControl *PageControl1);
        void __fastcall mZapiszClick(TObject *Sender);
        void __fastcall acnZamknijExecute(TObject *Sender);
        


private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};

//---------------------------------------------------------------------------

class TDocument : public TTabSheet
{
public:

  TDocument(TPageControl *PageControl1);
  __fastcall ~TDocument();
  void LoadFromFile(String AFileName);
  TRichEdit *RichEdit;
  String FileName;

};
TDocument::TDocument(TPageControl *PageControl1): TTabSheet(PageControl1)
{
  PageControl = PageControl1;
  Caption = "Nowy dokument";
  RichEdit = new TRichEdit(this);
  RichEdit->Parent = this;
  RichEdit->Align = alClient;
  RichEdit->WordWrap = false;
  RichEdit->ScrollBars = ssBoth;
}

//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
extern PACKAGE TDocument *Document;
//---------------------------------------------------------------------------
#endif
 

Implementacja:

 
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}

//---------------------------------------------------------------------------

int i=1;
 void __fastcall TForm1::DodajZakladke(TPageControl *PageControl1)
{
  TTabSheet *Zakladka;
  Zakladka = new TTabSheet(PageControl1);
  Zakladka->PageControl = PageControl1;
  Zakladka->Caption="Dokument " +IntToStr(i++);
  TRichEdit *RichEdit;
  RichEdit = new TRichEdit(Zakladka);
  RichEdit->Parent = Zakladka;
  RichEdit->Align = alClient;
  RichEdit->ScrollBars = ssBoth;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
     DodajZakladke(PageControl1);
}

//---------------------------------------------------------------------------

void __fastcall TForm1::ToolButton1Click(TObject *Sender)
{
       DodajZakladke(PageControl1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ToolButton2Click(TObject *Sender)
{
       delete(PageControl1->ActivePage);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::OProgramie1Click(TObject *Sender)
{
       AboutBox->ShowModal();
       if (AboutBox->ModalResult==mrOk)
       {
         AboutBox->Close();
       }
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Zamknijkart1Click(TObject *Sender)
{
       delete(PageControl1->ActivePage);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Nowakarta1Click(TObject *Sender)
{
      DodajZakladke(PageControl1);
}
//---------------------------------------------------------------------------

void TDocument::LoadFromFile(String AFileName)
{
  FileName =  AFileName;
  RichEdit->Lines->LoadFromFile(FileName);
  Caption = ExtractFileName(FileName);
}
//---------------------------------------------------------------------------

TStringList *Tokenize (String s,String delimiter)
{
  TStringList *StringList;
  int l; //length of s
  int start,delimp;
  String sub;
    StringList = new TStringList();
    start=0;
    if (s.Pos(delimiter)>0)
    {
      delimp =  s.Pos(delimiter);
      do
      {
        l=s.Length();
        sub=s.SubString(start,delimp-1);
        if (sub != "") StringList->Add(sub);
        s=s.SubString(delimp+1,l-delimp);
        delimp = s.Pos(delimiter);
      } while (delimp != 0);
      StringList->Add(s); // dodanie tego co zostało na końcu
    }
    else StringList->Add(s);    return StringList;
                                                      }
//---------------------------------------------------------------------------

void __fastcall TForm1::Wczytaj(TPageControl *PageControl1)
{

   TDocument *TDoc;

   if (OpenDialog1->Execute())
   TDoc->LoadFromFile(OpenDialog1->FileName);

}
void __fastcall TForm1::btnWczytajClick(TObject *Sender)
{
        Wczytaj(PageControl1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    TDocument *Doc1;
    Doc1 = new TDocument;
    if (OpenDialog1->Execute())
    {
     Doc1->RichEdit->Lines->LoadFromFile(OpenDialog1->FileName);
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::mWczytajClick(TObject *Sender)
{
     Wczytaj(PageControl1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Zapisz(TPageControl *PageControl1)
{

    TDocument *Doc2;
    Doc2 = new TDocument;
    if (SaveDialog1->Execute())
    {
     Doc2->RichEdit->Lines->SaveToFile(SaveDialog1->FileName);
    }
}

//---------------------------------------------------------------------------

void __fastcall TForm1::btnZapiszClick(TObject *Sender)
{
     Zapisz(PageControl1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::mZapiszClick(TObject *Sender)
{
   Wczytaj(PageControl1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::acnZamknijExecute(TObject *Sender)
{
       OKRightDlg->ShowModal();
        if(OKRightDlg->ModalResult==mrOk)
        {
                Close();
        }
        if(OKRightDlg->ModalResult==mrCancel)
        {
                OKRightDlg->Close();
        }
}

Mam problem z dodaniem do mojego programu-notatnika opcji zapisu i odczytu dokumentów. Moja klasa TDocument, która miała to umożliwiać nie działa poprawnie.

Niżej zamieściłem błędy wskazywane przez kompilator, wyżej cały program. Proszę o szybką pomoc, na tyle ile to możliwe.
void __fastcall TForm1::Button2Click(TObject Sender)
{
TDocument Doc1;
Doc1 = new TDocument; ** [C++ Error] Unit1.cpp(114): E2285 Could not find a match for 'TDocument::TDocument()'

if (OpenDialog1->Execute())
{ [C++ Error] Unit1.cpp(116): E2451 Undefined symbol 'TDoc'
TDoc1->RichEdit->Lines->LoadFromFile(OpenDialog1->FileName);
}
}

void __fastcall TForm1::Zapisz(TPageControl *PageControl1)
{

TDocument *Doc2;
Doc2 = new TDocument;      **[C++ Error] Unit1.cpp(128): E2285 Could not find a match for 'TDocument::TDocument()'**
if (SaveDialog1->Execute())  
{                                     **[C++ Error] Unit1.cpp(131): E2451 Undefined symbol 'TDoc1'** 
TDoc2->RichEdit->Lines->SaveToFile(SaveDialog1->FileName);
}

}

0

Kompilator mówi Ci że nie może znaleźć konstruktora TDocument::TDocument() - no i ma rację bo Twoja klasa ma konstruktor z parametrem.

0

Jak zwrócić ilość linii w RichEdit?

0

int ile= RichEdit1->Lines->Count;

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