added fast read+write

fixed modified bug for the notes
This commit is contained in:
Christian Hammacher 2006-04-25 14:24:21 +00:00
parent 2c541f338c
commit 98a1d2b3da
6 changed files with 49 additions and 103 deletions

View File

@ -115,7 +115,7 @@ AutoIncBuild=1
MajorVer=1
MinorVer=4
Release=2
Build=2
Build=5
Debug=0
PreRelease=0
Special=0
@ -126,7 +126,7 @@ CodePage=1252
[Version Info Keys]
CompanyName=AMX Mod X Dev Team
FileDescription=
FileVersion=1.4.2.2
FileVersion=1.4.2.5
InternalName=gaben
LegalCopyright=AMX Mod X Dev Team
LegalTrademarks=

Binary file not shown.

Binary file not shown.

View File

@ -828,7 +828,6 @@ end;
function TDocument.Save: Boolean;
var i: integer;
F: Textfile;
sLines: TStringList;
sNotes: String;
eFound: Boolean;
@ -840,8 +839,8 @@ begin
Result := True;
Cancel := False;
Screen.Cursor := crHourGlass;
ShowProgress(True);
if (FileExists(FFileName)) and (frmSettings.chkMakeBaks.Checked) then begin
try
CopyFile(PChar(FFileName), PChar(FFileName + '.bak'), False);
@ -855,51 +854,32 @@ begin
end;
try
AssignFile(F, FFilename);
Rewrite(F);
sLines := TStringList.Create;
if ActiveDoc = Self then begin
sLines := TStringList(frmMain.sciEditor.Lines);
sLines.Assign(frmMain.sciEditor.Lines);
sNotes := GetRTFText(frmMain.rtfNotes);
end
else begin
sLines := TStringList.Create;
sLines.Text := Code;
sNotes := NotesText;
end;
frmMain.pbLoading.Max := sLines.Count -1;
frmMain.pbLoading.Position := 0;
// ... save file...
for i := 0 to sLines.Count -1 do begin
if Cancel then begin
CloseFile(F);
Cancel := False;
exit;
end;
WriteLn(F, sLines[i]);
frmMain.pbLoading.Position := i;
SetProgressStatus('Saving File...');
Application.ProcessMessages;
end;
// ... and notes ...
// ... save file and append notes if neccessary ...
if frmSettings.optFileComment.Checked then begin
WriteLn(F, GetCurrLang.CommentBoxStart + ' AMXX-Studio Notes - DO NOT MODIFY BELOW HERE');
WriteLn(F, GetCurrLang.CommentBoxMiddle + sNotes);
WriteLn(F, GetCurrLang.CommentBoxEnd);
CloseFile(F);
end
else begin
CloseFile(F);
sLines := TStringList.Create;
sLines.Add(GetCurrLang.CommentBoxStart + ' AMXX-Studio Notes - DO NOT MODIFY BELOW HERE');
sLines.Add(GetCurrLang.CommentBoxMiddle + sNotes);
sLines.Add(GetCurrLang.CommentBoxEnd);
end;
sLines.SaveToFile(FFileName);
// ... and if the user stores their notes somewhere else save them now ...
if not frmSettings.optFileComment.Checked then begin
sLines := TStringList.Create; // don't overwrite our .Lines object
i := 0; // line 1 should be a comment
if FileExists(ParamStr(0) + 'config\Notes.dat') then
sLines.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\Notes.dat')
else begin
sLines.Clear; // something must be wrong, clear
else
sLines.Add('AMXX-Studio Notes - DO NOT MODIFY THIS FILE');
end;
eFound := False;
if sLines.Count > 2 then begin
@ -918,15 +898,15 @@ begin
sLines.Add(sNotes);
end;
sLines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'config\Notes.dat');
sLines.Destroy;
sLines.Free;
end;
FModified := False;
Modified := False;
except
Result := False;
end;
HideProgress;
Screen.Cursor := crDefault;
Plugin_FileSave(FFilename, False);
end;
@ -1152,10 +1132,9 @@ begin
end;
function TDocCollection.Open(AFilename: String; AHighlighter: String = ''): Integer;
var F: TextFile;
var eLines: TStringList;
eFound: Boolean;
i: integer;
eString: String;
eLines: TStringList;
begin
Result := -1;
@ -1189,71 +1168,36 @@ begin
Screen.Cursor := crHourGlass;
Cancel := False;
ShowProgress(True);
AssignFile(F, AFilename);
{ ... count lines ... }
i := 0;
Reset(F);
while not EOF(F) do begin
ReadLn(F, eString);
Inc(i, 1);
end;
{ ... read lines ... }
Reset(F);
eLines := TStringList.Create;
eLines.LoadFromFile(AFilename);
eFound := False;
// ... add the doc and load notes ...
with Add(AFilename, AHighlighter) do begin
ShowProgress(True);
frmMain.pbLoading.Max := i;
i := 0;
while not EOF(F) do begin
if Cancel then begin
Cancel := False;
CloseFile(F);
exit;
end;
ReadLn(F, eString);
if Assigned(GetCurrLang(AFilename)) then begin
if (eString = GetCurrLang(AFilename).CommentBoxStart + ' AMXX-Studio Notes - DO NOT MODIFY BELOW HERE') and (frmSettings.optFileComment.Checked) then begin
try
ReadLn(F, eString);
eString := Copy(eString, Length(GetCurrLang(AFilename).CommentBoxMiddle) +1, Length(eString));
NotesText := eString;
ReadLn(F, eString);
except
MessageBox(frmMain.Handle, PChar(lFailedLoadNotes), PChar(Application.Title), MB_ICONERROR);
end;
end
else begin
if i = 0 then
Code := eString
else
Code := Code + #13#10 + eString;
end;
end
else begin
if i = 0 then
Code := eString
else
Code := Code + #13#10 + eString;
end;
frmMain.pbLoading.Position := i;
SetProgressStatus('Loading file...');
Inc(i, 1);
Application.ProcessMessages;
end;
HideProgress;
Result := Index;
{ notes, zomg! }
if eLines.Count > 3 then begin
if eLines[eLines.Count -3] = GetCurrLang(AFilename).CommentBoxStart + ' AMXX-Studio Notes - DO NOT MODIFY BELOW HERE' then begin
try
NotesText := Copy(eLines[eLines.Count -2], Length(GetCurrLang(AFilename).CommentBoxMiddle) +1, Length(eLines[eLines.Count -2]));
CloseFile(F);
eLines.Delete(eLines.Count -1);
eLines.Delete(eLines.Count -1);
eLines.Delete(eLines.Count -1);
if frmSettings.optConfig.Checked then begin
eLines := TStringList.Create;
eFound := True;
except
MessageBox(frmMain.Handle, PChar(lFailedLoadNotes), PChar(Application.Title), MB_ICONERROR);
end;
end;
end;
Code := eLines.Text;
if (frmSettings.optConfig.Checked) and (not eFound) then begin
eLines.Clear;
if FileExists(ExtractFilePath(ParamStr(0)) + 'config\Notes.dat') then
eLines.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\Notes.dat')
else begin
eLines.Clear; // something must be wrong, clear
eLines.Add('AMXX-Studio Notes - DO NOT MODIFY THIS FILE');
eLines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'config\Notes.dat');
end;
@ -1266,11 +1210,10 @@ begin
break;
end;
end;
eLines.Destroy;
end;
end;
Screen.Cursor := crDefault;
eLines.Free;
if not Plugin_FileLoad(AFilename, False) then exit;

View File

@ -4498,8 +4498,8 @@ object frmMain: TfrmMain
OnMouseMove = lstOutputMouseMove
end
object pnlLoading: TSpTBXPanel
Left = 268
Top = 278
Left = 206
Top = 306
Width = 253
Height = 57
Caption = 'pnlLoading'

View File

@ -488,6 +488,9 @@ procedure TfrmMain.rtfNotesKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
UpdateNotes;
mnuModified.Caption := lModified;
ActiveDoc.Modified := True;
end;
{ <- Notes - Code-Explorer -> }