| 1 |
/////////////////////////////////////////////////////////// |
|---|
| 2 |
// EiEdit // |
|---|
| 3 |
// Ðåäàêòîð ÷àñòè ðåñóðñîâ Ïðîêëÿòûõ Çåìåëü // |
|---|
| 4 |
// Copyright (C) 2002 Gipat Group // |
|---|
| 5 |
// Ðàñïðîñòðàíÿåòñÿ íà óñëîâèÿõ // |
|---|
| 6 |
// Gipat Group's opened EI-editor-utility license // |
|---|
| 7 |
// âåðñèè 1.0 // |
|---|
| 8 |
// // |
|---|
| 9 |
// www.gipatgroup.org // |
|---|
| 10 |
/////////////////////////////////////////////////////////// |
|---|
| 11 |
|
|---|
| 12 |
//Ê ðàáîòå íàä äàííûì ôàéëîì ïðèëîæèëè ðóêè, íîãè.... êîðî÷å àôôòàðû: |
|---|
| 13 |
// 1) Sagrer (sagrer@yandex.ru) |
|---|
| 14 |
|
|---|
| 15 |
//////////////////////////////////////////////////////////////////////// |
|---|
| 16 |
|
|---|
| 17 |
program EIedit; |
|---|
| 18 |
|
|---|
| 19 |
{%ToDo 'EIedit.todo'} |
|---|
| 20 |
|
|---|
| 21 |
uses |
|---|
| 22 |
Windows, |
|---|
| 23 |
Messages, |
|---|
| 24 |
SysUtils, |
|---|
| 25 |
Classes, |
|---|
| 26 |
Graphics, |
|---|
| 27 |
Controls, |
|---|
| 28 |
Forms, |
|---|
| 29 |
Dialogs, |
|---|
| 30 |
StdCtrls, |
|---|
| 31 |
Registry, |
|---|
| 32 |
PZed in 'PZed.pas' {MainForm}, |
|---|
| 33 |
OptiF in 'OptiF.pas' {OptiForm}, |
|---|
| 34 |
Initer in 'Initer.pas', |
|---|
| 35 |
AboutF in 'AboutF.pas' {AboutForm}, |
|---|
| 36 |
ResursF in 'ResursF.pas' {ResursForm}, |
|---|
| 37 |
DelF in 'DelF.pas' {DelForm}, |
|---|
| 38 |
ViborTipaTegaF in 'ViborTipaTegaF.pas' {ViborTipaTegaForm}, |
|---|
| 39 |
QskFnForm in 'QskFnForm.pas' {AskFnForm}, |
|---|
| 40 |
TextsOptForm in 'TextsOptForm.pas' {TextsOptF}, |
|---|
| 41 |
BrowseDirForm in 'BrowseDirForm.pas' {BrowseDirF}, |
|---|
| 42 |
BaseOptForm in 'BaseOptForm.pas' {BaseOptF}, |
|---|
| 43 |
IshForm in 'IshForm.pas' {IshF}, |
|---|
| 44 |
MySys in 'MySys.pas', |
|---|
| 45 |
ShowProcessForm in 'ShowProcessForm.pas' {ShowProcessF}, |
|---|
| 46 |
ShabRedDbForm in 'ShabRedDbForm.pas' {ShabRedDbF}, |
|---|
| 47 |
PrintsDbR1Form in 'PrintsDbR1Form.pas' {PrintsDbR1F}, |
|---|
| 48 |
PrintsDbR2Form in 'PrintsDbR2Form.pas' {PrintsDbR2F}, |
|---|
| 49 |
PrintsDbR3Form in 'PrintsDbR3Form.pas' {PrintsDbR3F}, |
|---|
| 50 |
LmpLeversForm in 'LmpLeversForm.pas' {LmpLeversF}, |
|---|
| 51 |
LeversForm in 'LeversForm.pas' {LeversF}, |
|---|
| 52 |
ShablonimForm in 'ShablonimForm.pas' {ShablonimF}, |
|---|
| 53 |
CheckShablForm in 'CheckShablForm.pas' {CheckShablF}, |
|---|
| 54 |
UncAskForm in 'UncAskForm.pas' {UncAskF}, |
|---|
| 55 |
SinglPrintsDbR1Form in 'SinglPrintsDbR1Form.pas' {SinglPrintsDbR1F}, |
|---|
| 56 |
SinglPrintsDbR2Form in 'SinglPrintsDbR2Form.pas' {SinglPrintsDbR2F}, |
|---|
| 57 |
SinglPrintsDbR3Form in 'SinglPrintsDbR3Form.pas' {SinglPrintsDbR3F}, |
|---|
| 58 |
SinglItemsIdbR1Form in 'SinglItemsIdbR1Form.pas' {SinglItemsIdbR1F}, |
|---|
| 59 |
ItemsIdbR1Form in 'ItemsIdbR1Form.pas' {ItemsIdbR1F}, |
|---|
| 60 |
SinglItemsIdbR2Form in 'SinglItemsIdbR2Form.pas' {SinglItemsIdbR2F}, |
|---|
| 61 |
ItemsIdbR2Form in 'ItemsIdbR2Form.pas' {ItemsIdbR2F}, |
|---|
| 62 |
SinglItemsIdbR3Form in 'SinglItemsIdbR3Form.pas' {SinglItemsIdbR3F}, |
|---|
| 63 |
ItemsIdbR3Form in 'ItemsIdbR3Form.pas' {ItemsIdbR3F}, |
|---|
| 64 |
SinglItemsIdbR4Form in 'SinglItemsIdbR4Form.pas' {SinglItemsIdbR4F}, |
|---|
| 65 |
ItemsIdbR4Form in 'ItemsIdbR4Form.pas' {ItemsIdbR4F}, |
|---|
| 66 |
SinglItemsIdbR5Form in 'SinglItemsIdbR5Form.pas' {SinglItemsIdbR5F}, |
|---|
| 67 |
ItemsIdbR5Form in 'ItemsIdbR5Form.pas' {ItemsIdbR5F}, |
|---|
| 68 |
SinglItemsIdbR6Form in 'SinglItemsIdbR6Form.pas' {SinglItemsIdbR6F}, |
|---|
| 69 |
ItemsIdbR6Form in 'ItemsIdbR6Form.pas' {ItemsIdbR6F}, |
|---|
| 70 |
SinglPerksPdbR1Form in 'SinglPerksPdbR1Form.pas' {SinglPerksPdbR1F}, |
|---|
| 71 |
PerksPdbR1Form in 'PerksPdbR1Form.pas' {PerksPdbR1F}, |
|---|
| 72 |
SinglPerksPdbR2Form in 'SinglPerksPdbR2Form.pas' {SinglPerksPdbR2F}, |
|---|
| 73 |
PerksPdbR2Form in 'PerksPdbR2Form.pas' {PerksPdbR2F}, |
|---|
| 74 |
SinglQuestsQdbR1Form in 'SinglQuestsQdbR1Form.pas' {SinglQuestsQdbR1F}, |
|---|
| 75 |
SinglQuestsQdbR2Form in 'SinglQuestsQdbR2Form.pas' {SinglQuestsQdbR2F}, |
|---|
| 76 |
UnitsUdbR1Form in 'UnitsUdbR1Form.pas' {UnitsUdbR1F}, |
|---|
| 77 |
SinglUnitsUdbR1Form in 'SinglUnitsUdbR1Form.pas' {SinglUnitsUdbR1F}, |
|---|
| 78 |
SinglUnitsUdbR2Form in 'SinglUnitsUdbR2Form.pas' {SinglUnitsUdbR2F}, |
|---|
| 79 |
ValueSelectorForm in 'ValueSelectorForm.pas' {ValueSelectorF}, |
|---|
| 80 |
UnitsUdbR2Form in 'UnitsUdbR2Form.pas' {UnitsUdbR2F}, |
|---|
| 81 |
SinglUnitsUdbR3Form in 'SinglUnitsUdbR3Form.pas' {SinglUnitsUdbR3F}, |
|---|
| 82 |
UnitsUdbR3Form in 'UnitsUdbR3Form.pas' {UnitsUdbR3F}, |
|---|
| 83 |
SinglUnitsUdbR4Form in 'SinglUnitsUdbR4Form.pas' {SinglUnitsUdbR4F}, |
|---|
| 84 |
UnitsUdbR4Form in 'UnitsUdbR4Form.pas' {UnitsUdbR4F}, |
|---|
| 85 |
SinglSpellsSdbR1Form in 'SinglSpellsSdbR1Form.pas' {SinglSpellsSdbR1F}, |
|---|
| 86 |
SpellsSdbR1Form in 'SpellsSdbR1Form.pas' {SpellsSdbR1F}, |
|---|
| 87 |
SinglSpellsSdbR2Form in 'SinglSpellsSdbR2Form.pas' {SinglSpellsSdbR2F}, |
|---|
| 88 |
SpellsSdbR2Form in 'SpellsSdbR2Form.pas' {SpellsSdbR2F}, |
|---|
| 89 |
SinglSpellsSdbR3Form in 'SinglSpellsSdbR3Form.pas' {SinglSpellsSdbR3F}, |
|---|
| 90 |
SpellsSdbR3Form in 'SpellsSdbR3Form.pas' {SpellsSdbR3F}, |
|---|
| 91 |
SinglSpellsSdbR4Form in 'SinglSpellsSdbR4Form.pas' {SinglSpellsSdbR4F}, |
|---|
| 92 |
SpellsSdbR4Form in 'SpellsSdbR4Form.pas' {SpellsSdbR4F}, |
|---|
| 93 |
SinglSpellsSdbR5Form in 'SinglSpellsSdbR5Form.pas' {SinglSpellsSdbR5F}, |
|---|
| 94 |
SpellsSdbR5Form in 'SpellsSdbR5Form.pas' {SpellsSdbR5F}, |
|---|
| 95 |
ASoundEditorForm in 'ASoundEditorForm.pas' {ASoundEditorF}, |
|---|
| 96 |
KOLTextFileInString in 'KOLTextFileInString.pas', |
|---|
| 97 |
SinglAcksDbR1Form in 'SinglAcksDbR1Form.pas' {SinglAcksDbR1F}, |
|---|
| 98 |
SinglAcksDbR2Form in 'SinglAcksDbR2Form.pas' {SinglAcksDbR2F}, |
|---|
| 99 |
SinglAcksDbR3Form in 'SinglAcksDbR3Form.pas' {SinglAcksDbR3F}, |
|---|
| 100 |
ResbuildForm in 'ResbuildForm.pas' {ResbuildF}, |
|---|
| 101 |
KOLAnIniFile in 'KOLAnIniFile.pas', |
|---|
| 102 |
ResPathsForm in 'ResPathsForm.pas' {ResPathsF}, |
|---|
| 103 |
KOLForPaths, |
|---|
| 104 |
RbPackOptForm in 'RbPackOptForm.pas' {RbPackOptF}, |
|---|
| 105 |
RBUnPackOptForm in 'RBUnPackOptForm.pas' {RBUnPackOptF}, |
|---|
| 106 |
KOLVersionInfo, |
|---|
| 107 |
TextEdForm in 'TextEdForm.pas' {TextEdF}, |
|---|
| 108 |
NewFilterAskForm in 'NewFilterAskForm.pas' {NewFilterAskF}, |
|---|
| 109 |
KOLClearDir in 'KOLClearDir.pas', |
|---|
| 110 |
KOLFileInString in 'KOLFileInString.pas', |
|---|
| 111 |
VerInfoTxtFormat, |
|---|
| 112 |
EiEdit_ver; |
|---|
| 113 |
|
|---|
| 114 |
{$R *.RES} |
|---|
| 115 |
{$R MainF_MHXP1.RES} |
|---|
| 116 |
|
|---|
| 117 |
|
|---|
| 118 |
|
|---|
| 119 |
|
|---|
| 120 |
Function GetDraNum(stroka : string) : byte; |
|---|
| 121 |
begin |
|---|
| 122 |
result := 0; |
|---|
| 123 |
if stroka[1] = 'A' then result := 1; |
|---|
| 124 |
if stroka[1] = 'B' then result := 2; |
|---|
| 125 |
if stroka[1] = 'C' then result := 3; |
|---|
| 126 |
if stroka[1] = 'D' then result := 4; |
|---|
| 127 |
if stroka[1] = 'E' then result := 5; |
|---|
| 128 |
if stroka[1] = 'F' then result := 6; |
|---|
| 129 |
if stroka[1] = 'G' then result := 7; |
|---|
| 130 |
if stroka[1] = 'H' then result := 8; |
|---|
| 131 |
if stroka[1] = 'I' then result := 9; |
|---|
| 132 |
if stroka[1] = 'J' then result := 10; |
|---|
| 133 |
if stroka[1] = 'K' then result := 11; |
|---|
| 134 |
if stroka[1] = 'L' then result := 12; |
|---|
| 135 |
if stroka[1] = 'M' then result := 13; |
|---|
| 136 |
if stroka[1] = 'N' then result := 14; |
|---|
| 137 |
if stroka[1] = 'O' then result := 15; |
|---|
| 138 |
if stroka[1] = 'P' then result := 16; |
|---|
| 139 |
end; |
|---|
| 140 |
|
|---|
| 141 |
Function ExtrPath : string; |
|---|
| 142 |
var |
|---|
| 143 |
s1,s2,s3 :string; |
|---|
| 144 |
I,simvolov : integer; |
|---|
| 145 |
begin |
|---|
| 146 |
S1 := Application.ExeName; |
|---|
| 147 |
I := 0; |
|---|
| 148 |
repeat |
|---|
| 149 |
I := I+1; |
|---|
| 150 |
S2 := S1[I]; |
|---|
| 151 |
until s2 = #0; |
|---|
| 152 |
Simvolov := I-11; |
|---|
| 153 |
I := 0; |
|---|
| 154 |
repeat |
|---|
| 155 |
I := I+1; |
|---|
| 156 |
s3 := s3+s1[I]; |
|---|
| 157 |
until I = simvolov; |
|---|
| 158 |
Result := S3; |
|---|
| 159 |
end; |
|---|
| 160 |
|
|---|
| 161 |
Procedure OptiCopyFile(FileSource, FileTarget: string); |
|---|
| 162 |
const BlockSize = 65536; |
|---|
| 163 |
var |
|---|
| 164 |
ElapsedSize,CopySize: LongInt; |
|---|
| 165 |
SourceStream,TargetStream: TFileStream; |
|---|
| 166 |
Source,Target:String; |
|---|
| 167 |
Procnow,Proc2Now, Proc3Now : integer; |
|---|
| 168 |
|
|---|
| 169 |
begin |
|---|
| 170 |
|
|---|
| 171 |
|
|---|
| 172 |
Source:=FileSource; |
|---|
| 173 |
Target:=FileTarget; |
|---|
| 174 |
SourceStream:=TFileStream.Create(Source,fmOpenRead); |
|---|
| 175 |
TargetStream:=TFileStream.Create(Target,fmCreate); |
|---|
| 176 |
ElapsedSize:=SourceStream.Size - SourceStream.Position; |
|---|
| 177 |
OptiForm.ProgressBar1.Max :=SourceStream.Size; |
|---|
| 178 |
Proc2Now := 0; |
|---|
| 179 |
Proc3Now := 0; |
|---|
| 180 |
while ElapsedSize > 0 do begin |
|---|
| 181 |
|
|---|
| 182 |
if ElapsedSize < BlockSize then CopySize:=ElapsedSize else |
|---|
| 183 |
CopySize:=BlockSize; |
|---|
| 184 |
TargetStream.CopyFrom(SourceStream,CopySize); |
|---|
| 185 |
ElapsedSize:=SourceStream.Size - SourceStream.Position; |
|---|
| 186 |
ProcNow :=(SourceStream.Position*100 div SourceStream.Size*100)div 100; |
|---|
| 187 |
If (Proc2Now <> procnow) and (Proc3Now <> 100)then proc3now := Proc3Now+1; |
|---|
| 188 |
Proc2Now := ProcNow; |
|---|
| 189 |
OptiForm.Label4.caption := inttostr(Proc3Now)+'%'; |
|---|
| 190 |
OptiForm.ProgressBar1.Position:=SourceStream.Position; |
|---|
| 191 |
OptiForm.Update; |
|---|
| 192 |
end; |
|---|
| 193 |
FileSetDate(TargetStream.Handle,FileGetDate(SourceStream.Handle)); |
|---|
| 194 |
If Proc3Now <> 100 then OptiForm.Label4.caption := inttostr(100)+'%'; |
|---|
| 195 |
TargetStream.Free; |
|---|
| 196 |
SourceStream.Free; |
|---|
| 197 |
end; |
|---|
| 198 |
|
|---|
| 199 |
Procedure GenNewConfInf; |
|---|
| 200 |
begin |
|---|
| 201 |
//Ýòà ôóíêà äîëæíà ñîáðàòü è ñãåíåðèòü âñþ íåîáõîäèìóþ |
|---|
| 202 |
//èíôó äëÿ ñîçäàíèÿ êîíôèãà. |
|---|
| 203 |
|
|---|
| 204 |
//Ïðîâåðèòü, åñòü ëè íà êîìïå ÏÇ. |
|---|
| 205 |
Registr.RootKey := HKEY_CURRENT_USER; //Òàì ëåæèò ðååñòð ÏÇ. |
|---|
| 206 |
//Ïîïûòàòüñÿ îòêðûòü êëþ÷, è åñëè îí áóäåò îáíàðóæåí - çàáðàòü íóæíóþ èíôó |
|---|
| 207 |
If registr.KeyExists('\Software\Nival Interactive\EvilIslands\') = true then begin |
|---|
| 208 |
registr.OpenKey('\Software\Nival Interactive\EvilIslands\Path Settings',false); |
|---|
| 209 |
PzPath := registr.ReadString('WORK PATH'); |
|---|
| 210 |
PzResPath := registr.ReadString('RESOURCES PATH'); |
|---|
| 211 |
PzCdPath := registr.ReadString('CD-ROM PATH'); |
|---|
| 212 |
registr.closekey; |
|---|
| 213 |
MessageDlg('ÏÇ íàéäåíû ïî ïóòè...'+PZPath,mtInformation,[mbOK],0); |
|---|
| 214 |
end |
|---|
| 215 |
else begin |
|---|
| 216 |
MessageDlg('Ñëåäîâ ÏÇ â ðååñòðå íèôèãà íå îáíàðóæèëîñü :(',mtWarning,[mbOK],0); |
|---|
| 217 |
//È òåïåðü ñäåëàòü ïóòè è ïàïêè äëÿ ÏûÇîâ è ðåñóðñîâ â ïàïêå ïðîãè. |
|---|
| 218 |
PzPath := Path+'TempPz\'; |
|---|
| 219 |
PzResPath := PzPath+'res\'; |
|---|
| 220 |
PzCdPath := PzPath; |
|---|
| 221 |
|
|---|
| 222 |
//Ñîáñíî ñîçäàíèå ïàïîê |
|---|
| 223 |
If DirectoryExists(PzPath) = false then begin |
|---|
| 224 |
ForceDirectories(PzPath); |
|---|
| 225 |
end; |
|---|
| 226 |
|
|---|
| 227 |
If DirectoryExists(PzResPath) = false then begin |
|---|
| 228 |
ForceDirectories(PzResPath); |
|---|
| 229 |
end; |
|---|
| 230 |
end; |
|---|
| 231 |
|
|---|
| 232 |
//Äåôîëòíàÿ ïàïêà |
|---|
| 233 |
DefalDir := Path; |
|---|
| 234 |
|
|---|
| 235 |
//Ðàçìåðû îêíà |
|---|
| 236 |
MfHeight := Screen.Height-150; |
|---|
| 237 |
MfWidth := Screen.Width-150; |
|---|
| 238 |
MfTop := Screen.Height div 50; |
|---|
| 239 |
MfLeft := Screen.Width div 50; |
|---|
| 240 |
MfWstate := WstateToInt(WsNormal); |
|---|
| 241 |
|
|---|
| 242 |
//Ïóòè ê èñõîäíèêàì áàç - ñèíãëîâîé è ìóëüòîâîé. |
|---|
| 243 |
DatabaseResIsh := Path+'bases\database\'; |
|---|
| 244 |
DatabaselmpResIsh := Path+'bases\databaselmp\'; |
|---|
| 245 |
|
|---|
| 246 |
//Åñëè íåòó ïàïîê äëÿ èñõîäíèêà - ñîçäàòü |
|---|
| 247 |
If DirectoryExists(PathMinusDir(DatabaseResIsh)) = false then begin |
|---|
| 248 |
ForceDirectories(PathMinusDir(DatabaseResIsh)); |
|---|
| 249 |
end; |
|---|
| 250 |
|
|---|
| 251 |
//Ïóòè ê ôàéëàì ðåñóðñîâ èãðû... |
|---|
| 252 |
AiinfoResPath := PzResPath+'aiinfo.res'; |
|---|
| 253 |
DatabaseResPath := PzResPath+'database.res'; |
|---|
| 254 |
DatabaselmpResPath := PzResPath+'databaselmp.res'; |
|---|
| 255 |
FiguresResPath := PzResPath+'figures.res'; |
|---|
| 256 |
GfxResPath := PzResPath+'gfx.res'; |
|---|
| 257 |
MaterialsResPath := PzResPath+'materials.res'; |
|---|
| 258 |
MenusResPath := PzResPath+'menus.res'; |
|---|
| 259 |
OutroResPath := PzResPath+'outro.res'; |
|---|
| 260 |
RedressResPath := PzResPath+'redress.res'; |
|---|
| 261 |
SfxResPath:= PzResPath+'sfx.res'; |
|---|
| 262 |
SpeechResPath := PzResPath+'speech.res'; |
|---|
| 263 |
TextsResPath := PzResPath+'texts.res'; |
|---|
| 264 |
TextslmpResPath := PzResPath+'textslmp.res'; |
|---|
| 265 |
TexturesResPath := PzResPath+'textures.res'; |
|---|
| 266 |
|
|---|
| 267 |
//Íà÷àëüíûé ïóòü äëÿ ðåäàêòîðà òåêñòîâèêîâ... |
|---|
| 268 |
TextsEdStart := GetExtensDirName(TextsResPath); |
|---|
| 269 |
|
|---|
| 270 |
//Ïî óìîë÷àíèþ - îïòèìàéçèòü ñòàíäàðòíûå ðåñû â res-äèàëîãå |
|---|
| 271 |
OptStandRes := true; |
|---|
| 272 |
|
|---|
| 273 |
//Íàñòðîéêè îêíà ðåäàêòîðà òåêñòîâ... |
|---|
| 274 |
TxtEdDlgFiltList := TxtEdDlgDefFiltList; |
|---|
| 275 |
TxtEdDlgActFilt := 1; |
|---|
| 276 |
TxtEdDlg1Click := false; |
|---|
| 277 |
TxtEdDlgUseCritSiz := true; |
|---|
| 278 |
TxtEdDlgCritSiz := 100000; |
|---|
| 279 |
TxtEdDlgWordWrap := true; |
|---|
| 280 |
end; |
|---|
| 281 |
|
|---|
| 282 |
procedure Init; |
|---|
| 283 |
var |
|---|
| 284 |
ini_ver : string; |
|---|
| 285 |
|
|---|
| 286 |
begin |
|---|
| 287 |
//Ïîäãîòîâèòü ÷òî íàäî... òèïà âñÿêèå òàì ïåðåìåííûå |
|---|
| 288 |
//è ïðî÷åå... |
|---|
| 289 |
Application.ShowHint := true; //Õèíòû âêëþ÷èòü |
|---|
| 290 |
Registr := TRegistry.Create; //Ñîçäàíèå ïåðåìåííîé êëàññà ðåãèñòðà |
|---|
| 291 |
AnIniFil := TAnIniFile.Init; //Ñîçäàíèå ïåðåìåííîé êëàññà äëÿ èíèøíèêà. |
|---|
| 292 |
//Ïîëó÷èòü ïàòõó ê ïðîãå |
|---|
| 293 |
Path := ExtrPath; |
|---|
| 294 |
//Ïîëó÷èòü ïàòõó ê èíèøíèêó |
|---|
| 295 |
IniFilPath := Path+'EiEdit.ini'; |
|---|
| 296 |
//Çàëîàäèòü èíôó î âåðñèè... |
|---|
| 297 |
VitInfo := TVerInfoTxtFormat.Create; |
|---|
| 298 |
VitInfo.Ver1 := EiEdit_Ver1; |
|---|
| 299 |
VitInfo.Ver2 := EiEdit_Ver2; |
|---|
| 300 |
VitInfo.Ver3 := EiEdit_Ver3; |
|---|
| 301 |
VitInfo.Ver4 := EiEdit_Ver4; |
|---|
| 302 |
VitInfo.Status := EiEdit_Status; |
|---|
| 303 |
VitInfo.RCNum := EiEdit_RCNum; |
|---|
| 304 |
|
|---|
| 305 |
//Äëÿ íà÷àëà - ïðîâåðèòü, ñóùåñòâóåò ëè êîíôèã-ôàéë. |
|---|
| 306 |
If FileExists(IniFilPath) = true then begin |
|---|
| 307 |
//Òèïà ôàéë íà ìåñòå... |
|---|
| 308 |
//Íóæíî ïðîâåðèòü åãî âåðñèþ, åñëè íàäî |
|---|
| 309 |
//òî âíåñòè èñïðàâëåíèÿ. |
|---|
| 310 |
AnIniFil.Load(IniFilPath); |
|---|
| 311 |
ini_ver := AnIniFil.ReadString('MainSettings','Ver'); |
|---|
| 312 |
If ini_ver <> IntToStr(IniConfFormatVer) then begin |
|---|
| 313 |
//Ñîáñíî ïðàâêà èíèøíèêà â çàâèñèìîñòè îò íîìåðà âåðñèè. |
|---|
| 314 |
//Íó è + ìîæíî êàêèå äðóãèå äåéñòâèÿ âûïîëíèòü âìåñòå ñ àïãðåéäîì èíèøíèêà |
|---|
| 315 |
If ini_ver = '1.7.0' then begin |
|---|
| 316 |
//Îáíîâëåíèå ôîðìàòà äî âåðñèè 1.8.0 |
|---|
| 317 |
|
|---|
| 318 |
//Ïîäãîòîâêà ïåðåñåííûõ |
|---|
| 319 |
TxtEdDlgFiltList := TxtEdDlgDefFiltList; |
|---|
| 320 |
TxtEdDlgActFilt := 1; |
|---|
| 321 |
TxtEdDlg1Click := false; |
|---|
| 322 |
TxtEdDlgUseCritSiz := true; |
|---|
| 323 |
TxtEdDlgCritSiz := 100000; |
|---|
| 324 |
TxtEdDlgWordWrap := true; |
|---|
| 325 |
|
|---|
| 326 |
//Çàïèñü èíèøíèêà |
|---|
| 327 |
AnIniFil.WriteString('MainSettings','Ver','1.8.0'); |
|---|
| 328 |
AnIniFil.WriteString('MainSettings','TxtEdDlgFiltList',TxtEdDlgFiltList); |
|---|
| 329 |
AnIniFil.WriteInteger('MainSettings','TxtEdDlgActFilt',TxtEdDlgActFilt); |
|---|
| 330 |
AnIniFil.WriteBool('MainSettings','TxtEdDlg1Click',TxtEdDlg1Click); |
|---|
| 331 |
AnIniFil.WriteBool('MainSettings','TxtEdDlgUseCritSiz',TxtEdDlgUseCritSiz); |
|---|
| 332 |
AnIniFil.WriteInteger('MainSettings','TxtEdDlgCritSiz',TxtEdDlgCritSiz); |
|---|
| 333 |
AnIniFil.WriteBool('MainSettings','TxtEdDlgWordWrap',TxtEdDlgWordWrap); |
|---|
| 334 |
AnIniFil.Save(IniFilPath); |
|---|
| 335 |
ini_ver := '1.8.0'; |
|---|
| 336 |
//äðóãèå îïåðàöèè... |
|---|
| 337 |
end; |
|---|
| 338 |
|
|---|
| 339 |
If ini_ver = '1.8.0' then begin |
|---|
| 340 |
//Ýòîò ïîñëåäíèé IF - âûïîëíÿåòñÿ ïðè äîâîäêå äî ïîñëåäíåé âåðñèè. |
|---|
| 341 |
//Ùà âåðñèÿ ôîðìàòà êîíôèãà - 1 |
|---|
| 342 |
|
|---|
| 343 |
//Çàïèñü èíèøíèêà |
|---|
| 344 |
AnIniFil.WriteInteger('MainSettings','Ver',IniConfFormatVer); |
|---|
| 345 |
AnIniFil.Save(IniFilPath); |
|---|
| 346 |
ini_ver := IntToStr(IniConfFormatVer); |
|---|
| 347 |
|
|---|
| 348 |
//äðóãèå îïåðàöèè... |
|---|
| 349 |
|
|---|
| 350 |
//Ñîîáùèòü þçâåðþ |
|---|
| 351 |
MessageBox(Application.Handle,PChar('EiEdit.ini îáíîâëåí äî âåðñèè '+ini_ver),'Èíôîðìàöèÿ',MB_OK or MB_ICONINFORMATION); |
|---|
| 352 |
end; |
|---|
| 353 |
|
|---|
| 354 |
end; |
|---|
| 355 |
end |
|---|
| 356 |
else begin |
|---|
| 357 |
//Ôàéëà íåòó. Íàäî ñîçäàòü íîâûé. |
|---|
| 358 |
|
|---|
| 359 |
//Ñãåíåðèòü óìîë÷àëüíóþ èíôó |
|---|
| 360 |
//äëÿ èíèøíèêà... |
|---|
| 361 |
GenNewConfInf; |
|---|
| 362 |
|
|---|
| 363 |
//Íà âñÿêèé ñëó÷àé ïðîâåðèòü, åñòü ëè â ðååñòðå êëþ÷ ïðîãè (áîëåå ñòàðîé âåðñèè çíà÷èò) |
|---|
| 364 |
InitProgKey; |
|---|
| 365 |
if registr.KeyExists('\Software\EiEditor')= true then begin |
|---|
| 366 |
//Äà, åñòü áîëåå ñòàðàÿ âåðñèÿ. Â ïðèíöèïå, ìîæíî âçÿòü îòòóäà |
|---|
| 367 |
//êàêóþ åñòü èíôó. |
|---|
| 368 |
//Åñëè þçâåðü ðàçðåøèò :). |
|---|
| 369 |
If MessageBox(Application.Handle,'Îáíàðóæåíà ñòàðàÿ çàïèñü â ðååñòðå. Èñïîëüçîâàòü åå äëÿ ñîçäàíèÿ *.ini-ôàéëà êîíôèãóðàöèè?',Zagolov,MB_ICONQUESTION or MB_YESNO) = ID_YES then begin |
|---|
| 370 |
registr.OpenKey('\Software\EiEditor',false); |
|---|
| 371 |
PZPath := registr.ReadString('PZPath'); |
|---|
| 372 |
PZResPath := registr.ReadString('PZRezPath'); |
|---|
| 373 |
DefalDir := registr.ReadString('DefalDir'); |
|---|
| 374 |
MfHeight := registr.ReadInteger('MfHeight'); |
|---|
| 375 |
MfWidth := registr.ReadInteger('MfWidth'); |
|---|
| 376 |
MfTop := registr.ReadInteger('MfTop'); |
|---|
| 377 |
MfLeft := registr.ReadInteger('MfLeft'); |
|---|
| 378 |
MfWstate := registr.ReadInteger('MfWstate'); |
|---|
| 379 |
DatabaseResIsh := registr.ReadString('PathBasesIsh')+'database\'; |
|---|
| 380 |
DatabaselmpResIsh := registr.ReadString('PathBasesIsh')+'databaselmp\'; |
|---|
| 381 |
registr.CloseKey; |
|---|
| 382 |
//Ñãåíåðèòü ïóòè ê ðåñóðñàì... |
|---|
| 383 |
AiinfoResPath := PzResPath+'aiinfo.res'; |
|---|
| 384 |
DatabaseResPath := PzResPath+'database.res'; |
|---|
| 385 |
DatabaselmpResPath := PzResPath+'databaselmp.res'; |
|---|
| 386 |
FiguresResPath := PzResPath+'figures.res'; |
|---|
| 387 |
GfxResPath := PzResPath+'gfx.res'; |
|---|
| 388 |
MaterialsResPath := PzResPath+'materials.res'; |
|---|
| 389 |
MenusResPath := PzResPath+'menus.res'; |
|---|
| 390 |
OutroResPath := PzResPath+'outro.res'; |
|---|
| 391 |
RedressResPath := PzResPath+'redress.res'; |
|---|
| 392 |
SfxResPath:= PzResPath+'sfx.res'; |
|---|
| 393 |
SpeechResPath := PzResPath+'speech.res'; |
|---|
| 394 |
TextsResPath := PzResPath+'texts.res'; |
|---|
| 395 |
TextslmpResPath := PzResPath+'textslmp.res'; |
|---|
| 396 |
TexturesResPath := PzResPath+'textures.res'; |
|---|
| 397 |
//Íà÷àëüíûé ïóòü äëÿ ðåäàêòîðà òåêñòîâèêîâ... |
|---|
| 398 |
TextsEdStart := GetExtensDirName(TextsResPath); |
|---|
| 399 |
end; |
|---|
| 400 |
|
|---|
| 401 |
If MessageBox(Application.Handle,'Î÷èñòèòü ðååñòð îò çàïèñåé ñòàðûõ âåðñèé ïðîãðàììû?',Zagolov,MB_ICONQUESTION or MB_YESNO) = ID_YES then begin |
|---|
| 402 |
//Óäàëèòü êëþ÷ ðååñòðà ïðîãè... |
|---|
| 403 |
registr.DeleteKey('\Software\EiEditor'); |
|---|
| 404 |
end; |
|---|
| 405 |
end; |
|---|
| 406 |
|
|---|
| 407 |
//Òàê, òèïà èíôà äëÿ íîâîãî ôàéëà ãîòîâà. Ìîæíî òèïà íà÷àòü åãî ïèñàòü... |
|---|
| 408 |
AnIniFil.MakNewFile; |
|---|
| 409 |
AnIniFil.WriteInteger('MainSettings','Ver',IniConfFormatVer); //Âåðñèÿ ôîðìàòà êîíôåãà |
|---|
| 410 |
AnIniFil.WriteString('MainSettings','PzPath',PzPath); //Íàñòðîå÷íûé ïóòü ê ÏÇ |
|---|
| 411 |
AnIniFil.WriteString('MainSettings','PzResPath',PzResPath); //Íàñòðîå÷íûé ïóòü ê ðåçàì ÏÇ |
|---|
| 412 |
AnIniFil.WriteString('MainSettings','PzCdPath',PzCdPath); //Íàñòðîå÷íûé ïóòü ê ñèäþêó ÏÇ |
|---|
| 413 |
AnIniFil.WriteString('MainSettings','DefalDir',DefalDir); //Óìîë÷àëüíàÿ ïàïêà |
|---|
| 414 |
AnIniFil.WriteInteger('MainSettings','MfHeight',MfHeight); //Ïàðàìåòðû îêíà |
|---|
| 415 |
AnIniFil.WriteInteger('MainSettings','MfWidth',MfWidth); // --''-- |
|---|
| 416 |
AnIniFil.WriteInteger('MainSettings','MfTop',MfTop); // --''-- |
|---|
| 417 |
AnIniFil.WriteInteger('MainSettings','MfLeft',MfLeft); // --''-- |
|---|
| 418 |
AnIniFil.WriteInteger('MainSettings','MfWstate',MfWstate); // --''-- |
|---|
| 419 |
AnIniFil.WriteString('MainSettings','AiinfoResPath',AiinfoResPath); //Ïóòü ê aiinfo.res |
|---|
| 420 |
AnIniFil.WriteString('MainSettings','DatabaseResPath',DatabaseResPath); //Ïóòü ê database.res |
|---|
| 421 |
AnIniFil.WriteString('MainSettings','DatabaselmpResPath',DatabaselmpResPath); //Ïóòü ê databaselmp.res |
|---|
| 422 |
AnIniFil.WriteString('MainSettings','FiguresResPath',FiguresResPath); //Ïóòü ê figures.res |
|---|
| 423 |
AnIniFil.WriteString('MainSettings','GfxResPath',GfxResPath); //Ïóòü ê gfx.res |
|---|
| 424 |
AnIniFil.WriteString('MainSettings','MaterialsResPath',MaterialsResPath); //Ïóòü ê materials.res |
|---|
| 425 |
AnIniFil.WriteString('MainSettings','MenusResPath',MenusResPath); //Ïóòü ê menus.res |
|---|
| 426 |
AnIniFil.WriteString('MainSettings','OutroResPath',OutroResPath); //Ïóòü ê outro.res |
|---|
| 427 |
AnIniFil.WriteString('MainSettings','RedressResPath',RedressResPath); //Ïóòü ê redress.res |
|---|
| 428 |
AnIniFil.WriteString('MainSettings','SfxResPath',SfxResPath); //Ïóòü ê sfx.res |
|---|
| 429 |
AnIniFil.WriteString('MainSettings','SpeechResPath',SpeechResPath); //Ïóòü ê speech.res |
|---|
| 430 |
AnIniFil.WriteString('MainSettings','TextsResPath',TextsResPath); //Ïóòü ê texts.res |
|---|
| 431 |
AnIniFil.WriteString('MainSettings','TextslmpResPath',TextslmpResPath); //Ïóòü ê textslmp.res |
|---|
| 432 |
AnIniFil.WriteString('MainSettings','TexturesResPath',TexturesResPath); //Ïóòü ê textures.res |
|---|
| 433 |
AnIniFil.WriteString('MainSettings','DatabaseResIsh',DatabaseResIsh); //Ïóòü ê èñõîäíèêó áàçû ñèíãëà |
|---|
| 434 |
AnIniFil.WriteString('MainSettings','DatabaselmpResIsh',DatabaselmpResIsh); //Ïóòü ê èñõîäíèêó áàçû ìóëüòà |
|---|
| 435 |
AnIniFil.WriteString('MainSettings','TextsEdStart',TextsEdStart); //Ïóòü ê èñõîäíèêó áàçû ìóëüòà |
|---|
| 436 |
AnIniFil.WriteBool('MainSettings','OptStandRes',OptStandRes); //Îïòèìàéçèòü ëè ñòàíäàðòíûå ðåñû â res-äèàëîãå |
|---|
| 437 |
AnIniFil.WriteString('MainSettings','TxtEdDlgFiltList',TxtEdDlgFiltList); |
|---|
| 438 |
AnIniFil.WriteInteger('MainSettings','TxtEdDlgActFilt',TxtEdDlgActFilt); |
|---|
| 439 |
AnIniFil.WriteBool('MainSettings','TxtEdDlg1Click',TxtEdDlg1Click); |
|---|
| 440 |
AnIniFil.WriteBool('MainSettings','TxtEdDlgUseCritSiz',TxtEdDlgUseCritSiz); |
|---|
| 441 |
AnIniFil.WriteInteger('MainSettings','TxtEdDlgCritSiz',TxtEdDlgCritSiz); |
|---|
| 442 |
AnIniFil.WriteBool('MainSettings','TxtEdDlgWordWrap',TxtEdDlgWordWrap); |
|---|
| 443 |
AnIniFil.Save(IniFilPath); //È ñàâíóòü. Òèïà âñå îê :) |
|---|
| 444 |
|
|---|
| 445 |
end; |
|---|
| 446 |
|
|---|
| 447 |
//Çàãðóçêà. |
|---|
| 448 |
|
|---|
| 449 |
AnIniFil.Load(IniFilPath); //Ëîàäíóòü èíèøíèê. |
|---|
| 450 |
//È íà÷àòü ãðóçèòü... |
|---|
| 451 |
PzPath := AnIniFil.ReadString('MainSettings','PzPath'); |
|---|
| 452 |
PzResPath := AnIniFil.ReadString('MainSettings','PzResPath'); |
|---|
| 453 |
PzCdPath := AnIniFil.ReadString('MainSettings','PzCdPath'); |
|---|
| 454 |
DefalDir := AnIniFil.ReadString('MainSettings','DefalDir'); |
|---|
| 455 |
MfHeight := AnIniFil.ReadInteger('MainSettings','MfHeight'); |
|---|
| 456 |
MfWidth := AnIniFil.ReadInteger('MainSettings','MfWidth'); |
|---|
| 457 |
MfTop := AnIniFil.ReadInteger('MainSettings','MfTop'); |
|---|
| 458 |
MfLeft := AnIniFil.ReadInteger('MainSettings','MfLeft'); |
|---|
| 459 |
MfWstate := AnIniFil.ReadInteger('MainSettings','MfWstate'); |
|---|
| 460 |
AiinfoResPath := AnIniFil.ReadString('MainSettings','AiinfoResPath'); |
|---|
| 461 |
DatabaseResPath := AnIniFil.ReadString('MainSettings','DatabaseResPath'); |
|---|
| 462 |
DatabaselmpResPath := AnIniFil.ReadString('MainSettings','DatabaselmpResPath'); |
|---|
| 463 |
FiguresResPath := AnIniFil.ReadString('MainSettings','FiguresResPath'); |
|---|
| 464 |
GfxResPath := AnIniFil.ReadString('MainSettings','GfxResPath'); |
|---|
| 465 |
MaterialsResPath := AnIniFil.ReadString('MainSettings','MaterialsResPath'); |
|---|
| 466 |
MenusResPath := AnIniFil.ReadString('MainSettings','MenusResPath'); |
|---|
| 467 |
OutroResPath := AnIniFil.ReadString('MainSettings','OutroResPath'); |
|---|
| 468 |
RedressResPath := AnIniFil.ReadString('MainSettings','RedressResPath'); |
|---|
| 469 |
SfxResPath := AnIniFil.ReadString('MainSettings','SfxResPath'); |
|---|
| 470 |
SpeechResPath := AnIniFil.ReadString('MainSettings','SpeechResPath'); |
|---|
| 471 |
TextsResPath := AnIniFil.ReadString('MainSettings','TextsResPath'); |
|---|
| 472 |
TextslmpResPath := AnIniFil.ReadString('MainSettings','TextslmpResPath'); |
|---|
| 473 |
TexturesResPath := AnIniFil.ReadString('MainSettings','TexturesResPath'); |
|---|
| 474 |
DatabaseResIsh := AnIniFil.ReadString('MainSettings','DatabaseResIsh'); |
|---|
| 475 |
DatabaselmpResIsh := AnIniFil.ReadString('MainSettings','DatabaselmpResIsh'); |
|---|
| 476 |
TextsEdStart := AnIniFil.ReadString('MainSettings','TextsEdStart'); |
|---|
| 477 |
OptStandRes := AnIniFil.ReadBool('MainSettings','OptStandRes'); |
|---|
| 478 |
TxtEdDlgFiltList := AnIniFil.ReadString('MainSettings','TxtEdDlgFiltList'); |
|---|
| 479 |
TxtEdDlgActFilt := AnIniFil.ReadInteger('MainSettings','TxtEdDlgActFilt'); |
|---|
| 480 |
TxtEdDlg1Click := AnIniFil.ReadBool('MainSettings','TxtEdDlg1Click'); |
|---|
| 481 |
TxtEdDlgUseCritSiz := AnIniFil.ReadBool('MainSettings','TxtEdDlgUseCritSiz'); |
|---|
| 482 |
TxtEdDlgCritSiz := AnIniFil.ReadInteger('MainSettings','TxtEdDlgCritSiz'); |
|---|
| 483 |
TxtEdDlgWordWrap := AnIniFil.ReadBool('MainSettings','TxtEdDlgWordWrap'); |
|---|
| 484 |
//Òèïà çàãðóçèëè... |
|---|
| 485 |
|
|---|
| 486 |
//Ïîäãîòîâêà îñòàëüíûõ ïåðåìåííûõ.... |
|---|
| 487 |
//Èíäèêàòîðû çàêðûòîñòè (íåñóùåñòâîâíèÿ ;) ) ôîðì. |
|---|
| 488 |
ResursFormClosed := true; |
|---|
| 489 |
PrintsDbR1FClosed := true; |
|---|
| 490 |
PrintsDbR2FClosed := true; |
|---|
| 491 |
PrintsDbR3FClosed := true; |
|---|
| 492 |
LmpLeversFClosed := true; |
|---|
| 493 |
LeversFClosed := true; |
|---|
| 494 |
SinglPrintsDbR1FClosed := true; |
|---|
| 495 |
SinglPrintsDbR2FClosed := true; |
|---|
| 496 |
SinglPrintsDbR3FClosed := true; |
|---|
| 497 |
SinglItemsIdbR1FClosed := true; |
|---|
| 498 |
ItemsIdbR1FClosed := true; |
|---|
| 499 |
SinglItemsIdbR2FClosed := true; |
|---|
| 500 |
ItemsIdbR2FClosed := true; |
|---|
| 501 |
SinglItemsIdbR3FClosed := true; |
|---|
| 502 |
ItemsIdbR3FClosed := true; |
|---|
| 503 |
SinglItemsIdbR4FClosed := true; |
|---|
| 504 |
ItemsIdbR4FClosed := true; |
|---|
| 505 |
SinglItemsIdbR5FClosed := true; |
|---|
| 506 |
ItemsIdbR5FClosed := true; |
|---|
| 507 |
SinglItemsIdbR6FClosed := true; |
|---|
| 508 |
ItemsIdbR6FClosed := true; |
|---|
| 509 |
SinglPerksPdbR1FClosed := true; |
|---|
| 510 |
PerksPdbR1FClosed := true; |
|---|
| 511 |
SinglPerksPdbR2FClosed := true; |
|---|
| 512 |
PerksPdbR2FClosed := true; |
|---|
| 513 |
SinglQuestsQdbR1FClosed := true; |
|---|
| 514 |
SinglQuestsQdbR2FClosed := true; |
|---|
| 515 |
UnitsUdbR1FClosed := true; |
|---|
| 516 |
UnitsUdbR2FClosed := true; |
|---|
| 517 |
UnitsUdbR3FClosed := true; |
|---|
| 518 |
UnitsUdbR4FClosed := true; |
|---|
| 519 |
SinglUnitsUdbR1FClosed := true; |
|---|
| 520 |
SinglUnitsUdbR2FClosed := true; |
|---|
| 521 |
SinglUnitsUdbR3FClosed := true; |
|---|
| 522 |
SinglUnitsUdbR4FClosed := true; |
|---|
| 523 |
SpellsSdbR1FClosed := true; |
|---|
| 524 |
SpellsSdbR2FClosed := true; |
|---|
| 525 |
SpellsSdbR3FClosed := true; |
|---|
| 526 |
SpellsSdbR4FClosed := true; |
|---|
| 527 |
SpellsSdbR5FClosed := true; |
|---|
| 528 |
SinglSpellsSdbR1FClosed := true; |
|---|
| 529 |
SinglSpellsSdbR2FClosed := true; |
|---|
| 530 |
SinglSpellsSdbR3FClosed := true; |
|---|
| 531 |
SinglSpellsSdbR4FClosed := true; |
|---|
| 532 |
SinglSpellsSdbR5FClosed := true; |
|---|
| 533 |
SinglAcksDbR1FClosed := true; |
|---|
| 534 |
SinglAcksDbR2FClosed := true; |
|---|
| 535 |
SinglAcksDbR3FClosed := true; |
|---|
| 536 |
|
|---|
| 537 |
//Ïóòè ê áàçàì... |
|---|
| 538 |
databasedir := GetExtensDirName(DatabaseResPath); |
|---|
| 539 |
databaselmpdir := GetExtensDirName(DatabaselmpResPath); |
|---|
| 540 |
|
|---|
| 541 |
//Îêíà ðåäàêòîðà... |
|---|
| 542 |
TextEdF_Quantity := 0; |
|---|
| 543 |
SetLength(TextEdForms,TextEdF_Quantity); |
|---|
| 544 |
end; |
|---|
| 545 |
|
|---|
| 546 |
begin |
|---|
| 547 |
Application.Initialize; |
|---|
| 548 |
Application.Title := 'Ðåäàêòîð ÷àñòè ðåñóðñîâ ÏÇ '; |
|---|
| 549 |
Init; |
|---|
| 550 |
Application.CreateForm(TMainForm, MainForm); |
|---|
| 551 |
Application.CreateForm(TDelForm, DelForm); |
|---|
| 552 |
Application.CreateForm(TViborTipaTegaForm, ViborTipaTegaForm); |
|---|
| 553 |
Application.CreateForm(TAskFnForm, AskFnForm); |
|---|
| 554 |
Application.CreateForm(TTextsOptF, TextsOptF); |
|---|
| 555 |
Application.CreateForm(TBrowseDirF, BrowseDirF); |
|---|
| 556 |
Application.CreateForm(TBaseOptF, BaseOptF); |
|---|
| 557 |
Application.CreateForm(TIshF, IshF); |
|---|
| 558 |
Application.CreateForm(TShowProcessF, ShowProcessF); |
|---|
| 559 |
Application.CreateForm(TShabRedDbF, ShabRedDbF); |
|---|
| 560 |
Application.CreateForm(TShablonimF, ShablonimF); |
|---|
| 561 |
Application.CreateForm(TCheckShablF, CheckShablF); |
|---|
| 562 |
Application.CreateForm(TUncAskF, UncAskF); |
|---|
| 563 |
Application.CreateForm(TValueSelectorF, ValueSelectorF); |
|---|
| 564 |
Application.CreateForm(TASoundEditorF, ASoundEditorF); |
|---|
| 565 |
Application.CreateForm(TResbuildF, ResbuildF); |
|---|
| 566 |
Application.Run; |
|---|
| 567 |
registr.closekey; |
|---|
| 568 |
registr.free; |
|---|
| 569 |
AnIniFil.Kill; //Óáèòü îáüåêò êëàññà äëÿ ðàáîòû ñ èíèøíèêàìè. |
|---|
| 570 |
VitInfo.Free; //Îáúåêò äëÿ èíôû î âåðñèè. |
|---|
| 571 |
end. |
|---|