/* omat.cpp ** tämän tiedoston sisältö uudelleen määrittelee muutamia funktioita ** windows-käyttöön sopiviksi (vastaavia kuin kerho-ohjelman DOS-versiossa) ** ** Tekijät: Tommi Lahtonen ** Tehty: Huhtikuu 1997 ** Muutettu: 18.1.1998/vl ** Mitä muutettu + TarkistaOEM ** ** void kysy(const char *kysymys, string &vast); kysyy kysymyksen ja palauttaa vastauksen vast-muuttujassa void kysy(const char *kysymys, int &vast); kysyy numeron int KerroVirhe(const AnsiString &s, const AnsiString &v="VIRHE"); antaa virheilmoituksen int IsoIlmoitus(char *s); mahdollistaa pitkän tekstiviestin ilmoittamisen int ilmoitus(AnsiString &s); näyttää käyttäjälle halutun merkkijonon void ei_toimi(); Antaa viestin "ei toimi" int onko_tiedostoa(const char *nimi); tarkistaa onko annetun nimistä tiedostoa olemassa AnsiString TarkistaOEM(const char *); tarkistaa onko jono OEM-muotoinen ja jos on, konvertoi sen ANSIksi */ #include "omat.h" #include "mjonotpp.h" #include #include "kysydlg.h" #include "memodlg.h" #include /****************************************************************************/ int /* 2 = jono sy”tettiin */ lue_jono_oletus( /* 1 = jono ei mahtunut */ /* 0 = tyhj„ rivi */ /* -1 = */ /* -2 = virhe sy”t”ss„ */ const char *hopute, /* s Teksti joka tulostetaan kysymykseksi. */ int oletus_alku, /* s Sarake josta oletusarvo alkaa. (0=heti) */ int jonon_alku, /* s Sarake johon > tulee. (0=heti.) */ const char *oletus, /* s Merkkijonon oletusarvo. */ char *jono, /* t Palautettava merkkijono. */ int max_pituus /* s Palautettavan jonon maksimipituus. */ ) { KysyDlg->Kysymys->Caption = hopute; KysyDlg->Vastaus->Text = oletus; KysyDlg->ShowModal(); strncpy(jono, KysyDlg->Vastaus->Text.c_str(), max_pituus); if (KysyDlg->Vastaus->Text.Length() > max_pituus) return 1; if (KysyDlg->Vastaus->Text == "") return 0; return 2; } //------------------------------------------------------------------------------ void kysy(const char *kysymys, string &vast) { KysyDlg->Kysymys->Caption = kysymys; KysyDlg->Vastaus->Text = ""; KysyDlg->ShowModal(); vast = KysyDlg->Vastaus->Text.c_str(); } //------------------------------------------------------------------------------ void kysy(const char *kysymys, int &vast) { KysyDlg->Kysymys->Caption = kysymys; while (1) { KysyDlg->Vastaus->Text = ""; KysyDlg->ShowModal(); try { vast = StrToInt(KysyDlg->Vastaus->Text.c_str()); return; } catch (EConvertError &e) { ilmoitus("ei kelvollinen nro"); } } } //------------------------------------------------------------------------------ void otsikko(char c,const char *teksti) { KysyDlg->Caption = teksti; // ilmoitus(teksti); // OtsikkoForm->otsikko->Caption = teksti; // OtsikkoForm->ShowModal(); } //------------------------------------------------------------------------------ int kylla_kysymys(const char *s) { if (::MessageBox(0, s, " Kyllä/EI ", MB_YESNO) == IDYES) return 1; return 0; } int ilmoitus(AnsiString &s) { return ilmoitus(s.c_str()); } //------------------------------------------------------------------------------ int ilmoitus(const string &s) { if ( s == "" ) return 0; return KerroVirhe(TarkistaOEM(s), " Ilmoitus "); // ::MessageBox(0, s, " Ilmoitus ", MB_OK); // return 1; } //------------------------------------------------------------------------------ int KerroVirhe(const AnsiString &s, const AnsiString &v) { if (s=="") return 0; AnsiString as = TarkistaOEM(s.c_str()); ::MessageBox(0, as.c_str(), v.c_str(), MB_OK); return 1; } //------------------------------------------------------------------------------ int IsoIlmoitus(char *s) { MemoDialog->Memo->Clear(); istrstream is(s); string apu; while (lue_rivi(is, apu) ) { MemoDialog->Memo->Lines->Add(apu.c_str()); } MemoDialog->Show(); return 0; } //------------------------------------------------------------------------------ int onko_tiedostoa(const char *nimi) { FILE *f; f = fopen(nimi,"r"); if ( f == NULL ) return 0; fclose(f); return 1; } //------------------------------------------------------------------------------ void ei_toimi() { ilmoitus("ei toimi"); } //------------------------------------------------------------------------------ AnsiString TarkistaOEM(const string &st) { if ( st == "" ) return ""; const char *s = st.c_str(); if ( strpbrk(s,"Ž™š†„”") == NULL ) // Jollei mitään merkeistä ÅÄÖÜåäöü return s; char *p = new char[st.length()+1]; OemToChar(s,p); AnsiString as(p); delete [] p; return as; } int onko_tiedostoa(const string &tied) { return FileExists(tied.c_str()); }