Otóż mam parę problemów z budową edytora tekstowego. Pierwszym problemem jest zmniejszenie ścieżki pliku do samej względnej ścieżki. Szukałem jednak to co znalazłem albo nie istniało, albo już nie istnieje, "metoda" MinimizeName.
Struktura ProgSettings:
// General
AnsiString AppName;
unsigned short Width,
Height;
// File
AnsiString TempPath, FileName, FileNameMin;
bool FileSaved;
// Font
AnsiString FontName;
unsigned short FontSize;
};
{
MClose1Click(Sender);
if(OpenDialog1->Execute())
{
RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
ProgSettings.FileName = OpenDialog1->FileName;
ProgSettings.FileNameMin = OpenDialog1->FileName.MinimizeName();
Form1->Caption = ProgSettings.AppName + ProgSettings.FileName;
ProgSettings.FileSaved = true;
UndoSaved = UndoLastSave = 0;
UndoLast = 1;
ClearTemp();
RichEdit1->Lines->SaveToFile(ProgSettings.TempPath + "sqsundo" + UndoLast);
}
}
//--> MOpen1Click
Drugi problem to jest konwertowanie AnsiString do const char*, z którym bawiłem się na różne sposoby, zmieniając typy zmiennych ale i tak wciąż jest błąd z tą smutną linijką MessageBox();
ToExit to zmienna typu boolean do zapytania czy funkcję MClose1Click wywołała MExit1Click ale nie zajmowałem się tym i miło byłoby prosić też o jakąś pomoc jak to napisać. Niestety nie wpadłem na pomysł jak przetrzymać wartość zwróconą przez MessageBox by inaczej anulować zamykanie pliku.
{
if(!ProgSettings.FileSaved)
{
if(MessageBox(NULL, "File: " + ProgSettings.FileNameMin + "\nis not saved.\nWould you like to save?", "File not saved", MB_YESNOCANCEL | MB_ICONINFORMATION) == IDYES)
RichEdit1->Lines->SaveToFile(ProgSettings.FileName);
else if(IDCANCEL)
{
return;
}
}
ToExit = true;
RichEdit1->Lines->Clear();
ProgSettings.FileName = "";
ProgSettings.FileNameMin = "";
ProgSettings.FileSaved = false;
UndoSaved = UndoLastSave = UndoLast = 0;
Form1->Caption = ProgSettings.AppName + "Untitled";
ClearTemp();
}
//--> MClose1Click
Która funkcja jest odpowiedzialna za uruchomienie programu (szukając w dokumentacji nic nie ma) z parametrami, jeżeli w cmd ten program uruchamia się wpisując "program.exe file.txt". Czy kod jest na tyle potrzebny to nie wiem.
{
;
}
//--> MCompile1Click