//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "StringTable.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- __fastcall TStringTable::TStringTable() { FLength = 0; FTable = NULL; } //--------------------------------------------------------------------------- __fastcall TStringTable::~TStringTable() { if (FTable) delete[] FTable; } //--------------------------------------------------------------------------- bool __fastcall TStringTable::Create(AnsiString path, AnsiString lang, AnsiString fn) { TIniFile *EIniFile, *FIniFile; int i, p; if ((EIniFile = new TIniFile(path+"\\English.tdw")) == NULL) goto fail; if ((FIniFile = new TIniFile(path+"\\"+lang+".tdw")) == NULL) goto fail; if ((FLength = EIniFile->ReadInteger(fn, "Length", 0)) <= 0) goto fail; if ((FTable = new AnsiString[FLength]) == NULL) goto fail; for (i = 0; i < FLength; i++) { FTable[i] = FIniFile->ReadString(fn, AnsiString(i), ""); if (FTable[i].Length() == 0) { FTable[i] = EIniFile->ReadString(fn, AnsiString(i), ""); } while (1) { if ((p = FTable[i].Pos("\\n"))==0) break; FTable[i][p] = 0x0d; FTable[i][p+1] = 0x0a; } } delete FIniFile; delete EIniFile; return true; fail: if (FIniFile) delete FIniFile; if (EIniFile) delete EIniFile; FLength = 0; return false; } //---------------------------------------------------------------------------