/////////////////////////////////////////////////////////// // EiEdit // // Редактор части ресурсов Проклятых Земель // // Copyright (C) 2002 Gipat Group // // Распространяется на условиях // // Gipat Group's opened EI-editor-utility license // // версии 1.0 // // // // www.gipatgroup.org // /////////////////////////////////////////////////////////// //К работе над данным файлом приложили руки, ноги.... короче аффтары: // 1) Sagrer (sagrer@yandex.ru) //////////////////////////////////////////////////////////////////////// program EIedit; {%ToDo 'EIedit.todo'} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry, PZed in 'PZed.pas' {MainForm}, OptiF in 'OptiF.pas' {OptiForm}, Initer in 'Initer.pas', AboutF in 'AboutF.pas' {AboutForm}, ResursF in 'ResursF.pas' {ResursForm}, DelF in 'DelF.pas' {DelForm}, ViborTipaTegaF in 'ViborTipaTegaF.pas' {ViborTipaTegaForm}, QskFnForm in 'QskFnForm.pas' {AskFnForm}, TextsOptForm in 'TextsOptForm.pas' {TextsOptF}, BrowseDirForm in 'BrowseDirForm.pas' {BrowseDirF}, BaseOptForm in 'BaseOptForm.pas' {BaseOptF}, IshForm in 'IshForm.pas' {IshF}, MySys in 'MySys.pas', ShowProcessForm in 'ShowProcessForm.pas' {ShowProcessF}, ShabRedDbForm in 'ShabRedDbForm.pas' {ShabRedDbF}, PrintsDbR1Form in 'PrintsDbR1Form.pas' {PrintsDbR1F}, PrintsDbR2Form in 'PrintsDbR2Form.pas' {PrintsDbR2F}, PrintsDbR3Form in 'PrintsDbR3Form.pas' {PrintsDbR3F}, LmpLeversForm in 'LmpLeversForm.pas' {LmpLeversF}, LeversForm in 'LeversForm.pas' {LeversF}, ShablonimForm in 'ShablonimForm.pas' {ShablonimF}, CheckShablForm in 'CheckShablForm.pas' {CheckShablF}, UncAskForm in 'UncAskForm.pas' {UncAskF}, SinglPrintsDbR1Form in 'SinglPrintsDbR1Form.pas' {SinglPrintsDbR1F}, SinglPrintsDbR2Form in 'SinglPrintsDbR2Form.pas' {SinglPrintsDbR2F}, SinglPrintsDbR3Form in 'SinglPrintsDbR3Form.pas' {SinglPrintsDbR3F}, SinglItemsIdbR1Form in 'SinglItemsIdbR1Form.pas' {SinglItemsIdbR1F}, ItemsIdbR1Form in 'ItemsIdbR1Form.pas' {ItemsIdbR1F}, SinglItemsIdbR2Form in 'SinglItemsIdbR2Form.pas' {SinglItemsIdbR2F}, ItemsIdbR2Form in 'ItemsIdbR2Form.pas' {ItemsIdbR2F}, SinglItemsIdbR3Form in 'SinglItemsIdbR3Form.pas' {SinglItemsIdbR3F}, ItemsIdbR3Form in 'ItemsIdbR3Form.pas' {ItemsIdbR3F}, SinglItemsIdbR4Form in 'SinglItemsIdbR4Form.pas' {SinglItemsIdbR4F}, ItemsIdbR4Form in 'ItemsIdbR4Form.pas' {ItemsIdbR4F}, SinglItemsIdbR5Form in 'SinglItemsIdbR5Form.pas' {SinglItemsIdbR5F}, ItemsIdbR5Form in 'ItemsIdbR5Form.pas' {ItemsIdbR5F}, SinglItemsIdbR6Form in 'SinglItemsIdbR6Form.pas' {SinglItemsIdbR6F}, ItemsIdbR6Form in 'ItemsIdbR6Form.pas' {ItemsIdbR6F}, SinglPerksPdbR1Form in 'SinglPerksPdbR1Form.pas' {SinglPerksPdbR1F}, PerksPdbR1Form in 'PerksPdbR1Form.pas' {PerksPdbR1F}, SinglPerksPdbR2Form in 'SinglPerksPdbR2Form.pas' {SinglPerksPdbR2F}, PerksPdbR2Form in 'PerksPdbR2Form.pas' {PerksPdbR2F}, SinglQuestsQdbR1Form in 'SinglQuestsQdbR1Form.pas' {SinglQuestsQdbR1F}, SinglQuestsQdbR2Form in 'SinglQuestsQdbR2Form.pas' {SinglQuestsQdbR2F}, UnitsUdbR1Form in 'UnitsUdbR1Form.pas' {UnitsUdbR1F}, SinglUnitsUdbR1Form in 'SinglUnitsUdbR1Form.pas' {SinglUnitsUdbR1F}, SinglUnitsUdbR2Form in 'SinglUnitsUdbR2Form.pas' {SinglUnitsUdbR2F}, ValueSelectorForm in 'ValueSelectorForm.pas' {ValueSelectorF}, UnitsUdbR2Form in 'UnitsUdbR2Form.pas' {UnitsUdbR2F}, SinglUnitsUdbR3Form in 'SinglUnitsUdbR3Form.pas' {SinglUnitsUdbR3F}, UnitsUdbR3Form in 'UnitsUdbR3Form.pas' {UnitsUdbR3F}, SinglUnitsUdbR4Form in 'SinglUnitsUdbR4Form.pas' {SinglUnitsUdbR4F}, UnitsUdbR4Form in 'UnitsUdbR4Form.pas' {UnitsUdbR4F}, SinglSpellsSdbR1Form in 'SinglSpellsSdbR1Form.pas' {SinglSpellsSdbR1F}, SpellsSdbR1Form in 'SpellsSdbR1Form.pas' {SpellsSdbR1F}, SinglSpellsSdbR2Form in 'SinglSpellsSdbR2Form.pas' {SinglSpellsSdbR2F}, SpellsSdbR2Form in 'SpellsSdbR2Form.pas' {SpellsSdbR2F}, SinglSpellsSdbR3Form in 'SinglSpellsSdbR3Form.pas' {SinglSpellsSdbR3F}, SpellsSdbR3Form in 'SpellsSdbR3Form.pas' {SpellsSdbR3F}, SinglSpellsSdbR4Form in 'SinglSpellsSdbR4Form.pas' {SinglSpellsSdbR4F}, SpellsSdbR4Form in 'SpellsSdbR4Form.pas' {SpellsSdbR4F}, SinglSpellsSdbR5Form in 'SinglSpellsSdbR5Form.pas' {SinglSpellsSdbR5F}, SpellsSdbR5Form in 'SpellsSdbR5Form.pas' {SpellsSdbR5F}, ASoundEditorForm in 'ASoundEditorForm.pas' {ASoundEditorF}, KOLTextFileInString in 'KOLTextFileInString.pas', SinglAcksDbR1Form in 'SinglAcksDbR1Form.pas' {SinglAcksDbR1F}, SinglAcksDbR2Form in 'SinglAcksDbR2Form.pas' {SinglAcksDbR2F}, SinglAcksDbR3Form in 'SinglAcksDbR3Form.pas' {SinglAcksDbR3F}, ResbuildForm in 'ResbuildForm.pas' {ResbuildF}, KOLAnIniFile in 'KOLAnIniFile.pas', ResPathsForm in 'ResPathsForm.pas' {ResPathsF}, KOLForPaths, RbPackOptForm in 'RbPackOptForm.pas' {RbPackOptF}, RBUnPackOptForm in 'RBUnPackOptForm.pas' {RBUnPackOptF}, KOLVersionInfo, TextEdForm in 'TextEdForm.pas' {TextEdF}, NewFilterAskForm in 'NewFilterAskForm.pas' {NewFilterAskF}, KOLClearDir in 'KOLClearDir.pas', KOLFileInString in 'KOLFileInString.pas', VerInfoTxtFormat, EiEdit_ver; {$R *.RES} {$R MainF_MHXP1.RES} Function GetDraNum(stroka : string) : byte; begin result := 0; if stroka[1] = 'A' then result := 1; if stroka[1] = 'B' then result := 2; if stroka[1] = 'C' then result := 3; if stroka[1] = 'D' then result := 4; if stroka[1] = 'E' then result := 5; if stroka[1] = 'F' then result := 6; if stroka[1] = 'G' then result := 7; if stroka[1] = 'H' then result := 8; if stroka[1] = 'I' then result := 9; if stroka[1] = 'J' then result := 10; if stroka[1] = 'K' then result := 11; if stroka[1] = 'L' then result := 12; if stroka[1] = 'M' then result := 13; if stroka[1] = 'N' then result := 14; if stroka[1] = 'O' then result := 15; if stroka[1] = 'P' then result := 16; end; Function ExtrPath : string; var s1,s2,s3 :string; I,simvolov : integer; begin S1 := Application.ExeName; I := 0; repeat I := I+1; S2 := S1[I]; until s2 = #0; Simvolov := I-11; I := 0; repeat I := I+1; s3 := s3+s1[I]; until I = simvolov; Result := S3; end; Procedure OptiCopyFile(FileSource, FileTarget: string); const BlockSize = 65536; var ElapsedSize,CopySize: LongInt; SourceStream,TargetStream: TFileStream; Source,Target:String; Procnow,Proc2Now, Proc3Now : integer; begin Source:=FileSource; Target:=FileTarget; SourceStream:=TFileStream.Create(Source,fmOpenRead); TargetStream:=TFileStream.Create(Target,fmCreate); ElapsedSize:=SourceStream.Size - SourceStream.Position; OptiForm.ProgressBar1.Max :=SourceStream.Size; Proc2Now := 0; Proc3Now := 0; while ElapsedSize > 0 do begin if ElapsedSize < BlockSize then CopySize:=ElapsedSize else CopySize:=BlockSize; TargetStream.CopyFrom(SourceStream,CopySize); ElapsedSize:=SourceStream.Size - SourceStream.Position; ProcNow :=(SourceStream.Position*100 div SourceStream.Size*100)div 100; If (Proc2Now <> procnow) and (Proc3Now <> 100)then proc3now := Proc3Now+1; Proc2Now := ProcNow; OptiForm.Label4.caption := inttostr(Proc3Now)+'%'; OptiForm.ProgressBar1.Position:=SourceStream.Position; OptiForm.Update; end; FileSetDate(TargetStream.Handle,FileGetDate(SourceStream.Handle)); If Proc3Now <> 100 then OptiForm.Label4.caption := inttostr(100)+'%'; TargetStream.Free; SourceStream.Free; end; Procedure GenNewConfInf; begin //Эта функа должна собрать и сгенерить всю необходимую //инфу для создания конфига. //Проверить, есть ли на компе ПЗ. Registr.RootKey := HKEY_CURRENT_USER; //Там лежит реестр ПЗ. //Попытаться открыть ключ, и если он будет обнаружен - забрать нужную инфу If registr.KeyExists('\Software\Nival Interactive\EvilIslands\') = true then begin registr.OpenKey('\Software\Nival Interactive\EvilIslands\Path Settings',false); PzPath := registr.ReadString('WORK PATH'); PzResPath := registr.ReadString('RESOURCES PATH'); PzCdPath := registr.ReadString('CD-ROM PATH'); registr.closekey; MessageDlg('ПЗ найдены по пути...'+PZPath,mtInformation,[mbOK],0); end else begin MessageDlg('Следов ПЗ в реестре нифига не обнаружилось :(',mtWarning,[mbOK],0); //И теперь сделать пути и папки для ПыЗов и ресурсов в папке проги. PzPath := Path+'TempPz\'; PzResPath := PzPath+'res\'; PzCdPath := PzPath; //Собсно создание папок If DirectoryExists(PzPath) = false then begin ForceDirectories(PzPath); end; If DirectoryExists(PzResPath) = false then begin ForceDirectories(PzResPath); end; end; //Дефолтная папка DefalDir := Path; //Размеры окна MfHeight := Screen.Height-150; MfWidth := Screen.Width-150; MfTop := Screen.Height div 50; MfLeft := Screen.Width div 50; MfWstate := WstateToInt(WsNormal); //Пути к исходникам баз - сингловой и мультовой. DatabaseResIsh := Path+'bases\database\'; DatabaselmpResIsh := Path+'bases\databaselmp\'; //Если нету папок для исходника - создать If DirectoryExists(PathMinusDir(DatabaseResIsh)) = false then begin ForceDirectories(PathMinusDir(DatabaseResIsh)); end; //Пути к файлам ресурсов игры... AiinfoResPath := PzResPath+'aiinfo.res'; DatabaseResPath := PzResPath+'database.res'; DatabaselmpResPath := PzResPath+'databaselmp.res'; FiguresResPath := PzResPath+'figures.res'; GfxResPath := PzResPath+'gfx.res'; MaterialsResPath := PzResPath+'materials.res'; MenusResPath := PzResPath+'menus.res'; OutroResPath := PzResPath+'outro.res'; RedressResPath := PzResPath+'redress.res'; SfxResPath:= PzResPath+'sfx.res'; SpeechResPath := PzResPath+'speech.res'; TextsResPath := PzResPath+'texts.res'; TextslmpResPath := PzResPath+'textslmp.res'; TexturesResPath := PzResPath+'textures.res'; //Начальный путь для редактора текстовиков... TextsEdStart := GetExtensDirName(TextsResPath); //По умолчанию - оптимайзить стандартные ресы в res-диалоге OptStandRes := true; //Настройки окна редактора текстов... TxtEdDlgFiltList := TxtEdDlgDefFiltList; TxtEdDlgActFilt := 1; TxtEdDlg1Click := false; TxtEdDlgUseCritSiz := true; TxtEdDlgCritSiz := 100000; TxtEdDlgWordWrap := true; end; procedure Init; var ini_ver : string; begin //Подготовить что надо... типа всякие там переменные //и прочее... Application.ShowHint := true; //Хинты включить Registr := TRegistry.Create; //Создание переменной класса регистра AnIniFil := TAnIniFile.Init; //Создание переменной класса для инишника. //Получить патху к проге Path := ExtrPath; //Получить патху к инишнику IniFilPath := Path+'EiEdit.ini'; //Залоадить инфу о версии... VitInfo := TVerInfoTxtFormat.Create; VitInfo.Ver1 := EiEdit_Ver1; VitInfo.Ver2 := EiEdit_Ver2; VitInfo.Ver3 := EiEdit_Ver3; VitInfo.Ver4 := EiEdit_Ver4; VitInfo.Status := EiEdit_Status; VitInfo.RCNum := EiEdit_RCNum; //Для начала - проверить, существует ли конфиг-файл. If FileExists(IniFilPath) = true then begin //Типа файл на месте... //Нужно проверить его версию, если надо //то внести исправления. AnIniFil.Load(IniFilPath); ini_ver := AnIniFil.ReadString('MainSettings','Ver'); If ini_ver <> IntToStr(IniConfFormatVer) then begin //Собсно правка инишника в зависимости от номера версии. //Ну и + можно какие другие действия выполнить вместе с апгрейдом инишника If ini_ver = '1.7.0' then begin //Обновление формата до версии 1.8.0 //Подготовка пересенных TxtEdDlgFiltList := TxtEdDlgDefFiltList; TxtEdDlgActFilt := 1; TxtEdDlg1Click := false; TxtEdDlgUseCritSiz := true; TxtEdDlgCritSiz := 100000; TxtEdDlgWordWrap := true; //Запись инишника AnIniFil.WriteString('MainSettings','Ver','1.8.0'); AnIniFil.WriteString('MainSettings','TxtEdDlgFiltList',TxtEdDlgFiltList); AnIniFil.WriteInteger('MainSettings','TxtEdDlgActFilt',TxtEdDlgActFilt); AnIniFil.WriteBool('MainSettings','TxtEdDlg1Click',TxtEdDlg1Click); AnIniFil.WriteBool('MainSettings','TxtEdDlgUseCritSiz',TxtEdDlgUseCritSiz); AnIniFil.WriteInteger('MainSettings','TxtEdDlgCritSiz',TxtEdDlgCritSiz); AnIniFil.WriteBool('MainSettings','TxtEdDlgWordWrap',TxtEdDlgWordWrap); AnIniFil.Save(IniFilPath); ini_ver := '1.8.0'; //другие операции... end; If ini_ver = '1.8.0' then begin //Этот последний IF - выполняется при доводке до последней версии. //Ща версия формата конфига - 1 //Запись инишника AnIniFil.WriteInteger('MainSettings','Ver',IniConfFormatVer); AnIniFil.Save(IniFilPath); ini_ver := IntToStr(IniConfFormatVer); //другие операции... //Сообщить юзверю MessageBox(Application.Handle,PChar('EiEdit.ini обновлен до версии '+ini_ver),'Информация',MB_OK or MB_ICONINFORMATION); end; end; end else begin //Файла нету. Надо создать новый. //Сгенерить умолчальную инфу //для инишника... GenNewConfInf; //На всякий случай проверить, есть ли в реестре ключ проги (более старой версии значит) InitProgKey; if registr.KeyExists('\Software\EiEditor')= true then begin //Да, есть более старая версия. В принципе, можно взять оттуда //какую есть инфу. //Если юзверь разрешит :). If MessageBox(Application.Handle,'Обнаружена старая запись в реестре. Использовать ее для создания *.ini-файла конфигурации?',Zagolov,MB_ICONQUESTION or MB_YESNO) = ID_YES then begin registr.OpenKey('\Software\EiEditor',false); PZPath := registr.ReadString('PZPath'); PZResPath := registr.ReadString('PZRezPath'); DefalDir := registr.ReadString('DefalDir'); MfHeight := registr.ReadInteger('MfHeight'); MfWidth := registr.ReadInteger('MfWidth'); MfTop := registr.ReadInteger('MfTop'); MfLeft := registr.ReadInteger('MfLeft'); MfWstate := registr.ReadInteger('MfWstate'); DatabaseResIsh := registr.ReadString('PathBasesIsh')+'database\'; DatabaselmpResIsh := registr.ReadString('PathBasesIsh')+'databaselmp\'; registr.CloseKey; //Сгенерить пути к ресурсам... AiinfoResPath := PzResPath+'aiinfo.res'; DatabaseResPath := PzResPath+'database.res'; DatabaselmpResPath := PzResPath+'databaselmp.res'; FiguresResPath := PzResPath+'figures.res'; GfxResPath := PzResPath+'gfx.res'; MaterialsResPath := PzResPath+'materials.res'; MenusResPath := PzResPath+'menus.res'; OutroResPath := PzResPath+'outro.res'; RedressResPath := PzResPath+'redress.res'; SfxResPath:= PzResPath+'sfx.res'; SpeechResPath := PzResPath+'speech.res'; TextsResPath := PzResPath+'texts.res'; TextslmpResPath := PzResPath+'textslmp.res'; TexturesResPath := PzResPath+'textures.res'; //Начальный путь для редактора текстовиков... TextsEdStart := GetExtensDirName(TextsResPath); end; If MessageBox(Application.Handle,'Очистить реестр от записей старых версий программы?',Zagolov,MB_ICONQUESTION or MB_YESNO) = ID_YES then begin //Удалить ключ реестра проги... registr.DeleteKey('\Software\EiEditor'); end; end; //Так, типа инфа для нового файла готова. Можно типа начать его писать... AnIniFil.MakNewFile; AnIniFil.WriteInteger('MainSettings','Ver',IniConfFormatVer); //Версия формата конфега AnIniFil.WriteString('MainSettings','PzPath',PzPath); //Настроечный путь к ПЗ AnIniFil.WriteString('MainSettings','PzResPath',PzResPath); //Настроечный путь к резам ПЗ AnIniFil.WriteString('MainSettings','PzCdPath',PzCdPath); //Настроечный путь к сидюку ПЗ AnIniFil.WriteString('MainSettings','DefalDir',DefalDir); //Умолчальная папка AnIniFil.WriteInteger('MainSettings','MfHeight',MfHeight); //Параметры окна AnIniFil.WriteInteger('MainSettings','MfWidth',MfWidth); // --''-- AnIniFil.WriteInteger('MainSettings','MfTop',MfTop); // --''-- AnIniFil.WriteInteger('MainSettings','MfLeft',MfLeft); // --''-- AnIniFil.WriteInteger('MainSettings','MfWstate',MfWstate); // --''-- AnIniFil.WriteString('MainSettings','AiinfoResPath',AiinfoResPath); //Путь к aiinfo.res AnIniFil.WriteString('MainSettings','DatabaseResPath',DatabaseResPath); //Путь к database.res AnIniFil.WriteString('MainSettings','DatabaselmpResPath',DatabaselmpResPath); //Путь к databaselmp.res AnIniFil.WriteString('MainSettings','FiguresResPath',FiguresResPath); //Путь к figures.res AnIniFil.WriteString('MainSettings','GfxResPath',GfxResPath); //Путь к gfx.res AnIniFil.WriteString('MainSettings','MaterialsResPath',MaterialsResPath); //Путь к materials.res AnIniFil.WriteString('MainSettings','MenusResPath',MenusResPath); //Путь к menus.res AnIniFil.WriteString('MainSettings','OutroResPath',OutroResPath); //Путь к outro.res AnIniFil.WriteString('MainSettings','RedressResPath',RedressResPath); //Путь к redress.res AnIniFil.WriteString('MainSettings','SfxResPath',SfxResPath); //Путь к sfx.res AnIniFil.WriteString('MainSettings','SpeechResPath',SpeechResPath); //Путь к speech.res AnIniFil.WriteString('MainSettings','TextsResPath',TextsResPath); //Путь к texts.res AnIniFil.WriteString('MainSettings','TextslmpResPath',TextslmpResPath); //Путь к textslmp.res AnIniFil.WriteString('MainSettings','TexturesResPath',TexturesResPath); //Путь к textures.res AnIniFil.WriteString('MainSettings','DatabaseResIsh',DatabaseResIsh); //Путь к исходнику базы сингла AnIniFil.WriteString('MainSettings','DatabaselmpResIsh',DatabaselmpResIsh); //Путь к исходнику базы мульта AnIniFil.WriteString('MainSettings','TextsEdStart',TextsEdStart); //Путь к исходнику базы мульта AnIniFil.WriteBool('MainSettings','OptStandRes',OptStandRes); //Оптимайзить ли стандартные ресы в res-диалоге AnIniFil.WriteString('MainSettings','TxtEdDlgFiltList',TxtEdDlgFiltList); AnIniFil.WriteInteger('MainSettings','TxtEdDlgActFilt',TxtEdDlgActFilt); AnIniFil.WriteBool('MainSettings','TxtEdDlg1Click',TxtEdDlg1Click); AnIniFil.WriteBool('MainSettings','TxtEdDlgUseCritSiz',TxtEdDlgUseCritSiz); AnIniFil.WriteInteger('MainSettings','TxtEdDlgCritSiz',TxtEdDlgCritSiz); AnIniFil.WriteBool('MainSettings','TxtEdDlgWordWrap',TxtEdDlgWordWrap); AnIniFil.Save(IniFilPath); //И савнуть. Типа все ок :) end; //Загрузка. AnIniFil.Load(IniFilPath); //Лоаднуть инишник. //И начать грузить... PzPath := AnIniFil.ReadString('MainSettings','PzPath'); PzResPath := AnIniFil.ReadString('MainSettings','PzResPath'); PzCdPath := AnIniFil.ReadString('MainSettings','PzCdPath'); DefalDir := AnIniFil.ReadString('MainSettings','DefalDir'); MfHeight := AnIniFil.ReadInteger('MainSettings','MfHeight'); MfWidth := AnIniFil.ReadInteger('MainSettings','MfWidth'); MfTop := AnIniFil.ReadInteger('MainSettings','MfTop'); MfLeft := AnIniFil.ReadInteger('MainSettings','MfLeft'); MfWstate := AnIniFil.ReadInteger('MainSettings','MfWstate'); AiinfoResPath := AnIniFil.ReadString('MainSettings','AiinfoResPath'); DatabaseResPath := AnIniFil.ReadString('MainSettings','DatabaseResPath'); DatabaselmpResPath := AnIniFil.ReadString('MainSettings','DatabaselmpResPath'); FiguresResPath := AnIniFil.ReadString('MainSettings','FiguresResPath'); GfxResPath := AnIniFil.ReadString('MainSettings','GfxResPath'); MaterialsResPath := AnIniFil.ReadString('MainSettings','MaterialsResPath'); MenusResPath := AnIniFil.ReadString('MainSettings','MenusResPath'); OutroResPath := AnIniFil.ReadString('MainSettings','OutroResPath'); RedressResPath := AnIniFil.ReadString('MainSettings','RedressResPath'); SfxResPath := AnIniFil.ReadString('MainSettings','SfxResPath'); SpeechResPath := AnIniFil.ReadString('MainSettings','SpeechResPath'); TextsResPath := AnIniFil.ReadString('MainSettings','TextsResPath'); TextslmpResPath := AnIniFil.ReadString('MainSettings','TextslmpResPath'); TexturesResPath := AnIniFil.ReadString('MainSettings','TexturesResPath'); DatabaseResIsh := AnIniFil.ReadString('MainSettings','DatabaseResIsh'); DatabaselmpResIsh := AnIniFil.ReadString('MainSettings','DatabaselmpResIsh'); TextsEdStart := AnIniFil.ReadString('MainSettings','TextsEdStart'); OptStandRes := AnIniFil.ReadBool('MainSettings','OptStandRes'); TxtEdDlgFiltList := AnIniFil.ReadString('MainSettings','TxtEdDlgFiltList'); TxtEdDlgActFilt := AnIniFil.ReadInteger('MainSettings','TxtEdDlgActFilt'); TxtEdDlg1Click := AnIniFil.ReadBool('MainSettings','TxtEdDlg1Click'); TxtEdDlgUseCritSiz := AnIniFil.ReadBool('MainSettings','TxtEdDlgUseCritSiz'); TxtEdDlgCritSiz := AnIniFil.ReadInteger('MainSettings','TxtEdDlgCritSiz'); TxtEdDlgWordWrap := AnIniFil.ReadBool('MainSettings','TxtEdDlgWordWrap'); //Типа загрузили... //Подготовка остальных переменных.... //Индикаторы закрытости (несуществовния ;) ) форм. ResursFormClosed := true; PrintsDbR1FClosed := true; PrintsDbR2FClosed := true; PrintsDbR3FClosed := true; LmpLeversFClosed := true; LeversFClosed := true; SinglPrintsDbR1FClosed := true; SinglPrintsDbR2FClosed := true; SinglPrintsDbR3FClosed := true; SinglItemsIdbR1FClosed := true; ItemsIdbR1FClosed := true; SinglItemsIdbR2FClosed := true; ItemsIdbR2FClosed := true; SinglItemsIdbR3FClosed := true; ItemsIdbR3FClosed := true; SinglItemsIdbR4FClosed := true; ItemsIdbR4FClosed := true; SinglItemsIdbR5FClosed := true; ItemsIdbR5FClosed := true; SinglItemsIdbR6FClosed := true; ItemsIdbR6FClosed := true; SinglPerksPdbR1FClosed := true; PerksPdbR1FClosed := true; SinglPerksPdbR2FClosed := true; PerksPdbR2FClosed := true; SinglQuestsQdbR1FClosed := true; SinglQuestsQdbR2FClosed := true; UnitsUdbR1FClosed := true; UnitsUdbR2FClosed := true; UnitsUdbR3FClosed := true; UnitsUdbR4FClosed := true; SinglUnitsUdbR1FClosed := true; SinglUnitsUdbR2FClosed := true; SinglUnitsUdbR3FClosed := true; SinglUnitsUdbR4FClosed := true; SpellsSdbR1FClosed := true; SpellsSdbR2FClosed := true; SpellsSdbR3FClosed := true; SpellsSdbR4FClosed := true; SpellsSdbR5FClosed := true; SinglSpellsSdbR1FClosed := true; SinglSpellsSdbR2FClosed := true; SinglSpellsSdbR3FClosed := true; SinglSpellsSdbR4FClosed := true; SinglSpellsSdbR5FClosed := true; SinglAcksDbR1FClosed := true; SinglAcksDbR2FClosed := true; SinglAcksDbR3FClosed := true; //Пути к базам... databasedir := GetExtensDirName(DatabaseResPath); databaselmpdir := GetExtensDirName(DatabaselmpResPath); //Окна редактора... TextEdF_Quantity := 0; SetLength(TextEdForms,TextEdF_Quantity); end; begin Application.Initialize; Application.Title := 'Редактор части ресурсов ПЗ '; Init; Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TDelForm, DelForm); Application.CreateForm(TViborTipaTegaForm, ViborTipaTegaForm); Application.CreateForm(TAskFnForm, AskFnForm); Application.CreateForm(TTextsOptF, TextsOptF); Application.CreateForm(TBrowseDirF, BrowseDirF); Application.CreateForm(TBaseOptF, BaseOptF); Application.CreateForm(TIshF, IshF); Application.CreateForm(TShowProcessF, ShowProcessF); Application.CreateForm(TShabRedDbF, ShabRedDbF); Application.CreateForm(TShablonimF, ShablonimF); Application.CreateForm(TCheckShablF, CheckShablF); Application.CreateForm(TUncAskF, UncAskF); Application.CreateForm(TValueSelectorF, ValueSelectorF); Application.CreateForm(TASoundEditorF, ASoundEditorF); Application.CreateForm(TResbuildF, ResbuildF); Application.Run; registr.closekey; registr.free; AnIniFil.Kill; //Убить обьект класса для работы с инишниками. VitInfo.Free; //Объект для инфы о версии. end.