You can subscribe to this list here.
2002 |
Jan
|
Feb
(3) |
Mar
(50) |
Apr
(157) |
May
(43) |
Jun
(10) |
Jul
|
Aug
(10) |
Sep
(22) |
Oct
|
Nov
|
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
|
Feb
|
Mar
(12) |
Apr
|
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(23) |
Dec
(26) |
2004 |
Jan
(8) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
(10) |
May
(3) |
Jun
(4) |
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(10) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
(78) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
Update of /cvsroot/gmarathon/gmarathon/src/Source In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv16894 Modified Files: BlobViewer.dfm CodeSnippets.dfm CompileDBObject.dfm DatabaseManager.dfm DebugAddBreakPoint.dfm DebugBreakPoints.dfm DebugCallStack.dfm DebugEvalModify.dfm DebugLocalVariables.dfm DebugWatches.dfm DescribeForm.dfm DropObject.dfm EditorConstraint.dfm EditorConstraint.pas EditorStoredProcedure.dfm EditorStoredProcedure.pas Globals.pas marathon.dpr Log Message: Numerous bug fixes and current work in progress Index: DescribeForm.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DescribeForm.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DescribeForm.dfm 1 Feb 2002 14:48:53 -0000 1.1.1.1 +++ DescribeForm.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -5,6 +5,7 @@ Height = 407 Caption = 'frmDescribe' Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Index: Globals.pas =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/Globals.pas,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- Globals.pas 22 Oct 2006 06:04:28 -0000 1.14 +++ Globals.pas 15 Jun 2007 21:31:32 -0000 1.15 @@ -21,6 +21,7 @@ Classes, SysUtils, Messages, Graphics, Registry, ActnList, Dialogs, ExtCtrls, DB, Forms, Controls, Windows, Comctrls, DBGrids, StdCtrls, SynEdit, + StrUtils, rmTreeNonView, rmPanel, IB_Components, @@ -244,6 +245,8 @@ procedure LoadFormPosition(F : TForm); procedure SaveFormPosition(F : TForm); +procedure ValidateFormState(F:TForm); + procedure LoadSplitterPosition(F : TForm; Panel : TrmPanel); procedure SaveSplitterPosition(F : TForm; Panel : TrmPanel); @@ -1104,7 +1107,7 @@ blr_blob : begin - Result := 'blob'; + Result := 'blob' + ifthen(fSubType > 0, ' sub_type '+inttostr(fSubType), ''); end; end; end; @@ -2203,6 +2206,14 @@ end; end; +procedure ValidateFormState(F:TForm); +var + wMonitor : TMonitor; +begin + wMonitor := screen.MonitorFromWindow(f.Handle, mdNull); + F.MakeFullyVisible(wMonitor); +end; + procedure LoadSplitterPosition(F : TForm; Panel : TrmPanel); var R : TRegistry; @@ -2944,6 +2955,9 @@ { $Log$ +Revision 1.15 2007/06/15 21:31:32 rjmills +Numerous bug fixes and current work in progress + Revision 1.14 2006/10/22 06:04:28 rjmills Fixes and Updates for Look and Feel in WinXP Index: DebugCallStack.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DebugCallStack.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DebugCallStack.dfm 1 Feb 2002 14:48:51 -0000 1.1.1.1 +++ DebugCallStack.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -7,6 +7,7 @@ BorderStyle = bsSizeToolWin Caption = 'Call Stack' Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Index: DebugEvalModify.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DebugEvalModify.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DebugEvalModify.dfm 1 Feb 2002 14:48:51 -0000 1.1.1.1 +++ DebugEvalModify.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -7,6 +7,7 @@ ClientHeight = 293 ClientWidth = 359 Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Index: EditorStoredProcedure.pas =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/EditorStoredProcedure.pas,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- EditorStoredProcedure.pas 22 Oct 2006 06:04:28 -0000 1.15 +++ EditorStoredProcedure.pas 15 Jun 2007 21:31:32 -0000 1.16 @@ -348,7 +348,7 @@ tmp := 'create procedure ' + MakeQuotedIdent(FObjectName, FIsInterbase6, FSQLDialect) + ' ' else tmp := 'create procedure ' + FObjectName + ' '; - if FIsinterbase6 and (FSQLDialect = 3) then + if FIsinterbase6 {and (FSQLDialect = 3)} then qryStoredProc.SQL.Add('select A.RDB$PARAMETER_NAME, B.RDB$FIELD_TYPE, B.RDB$FIELD_LENGTH, B.RDB$FIELD_SCALE, B.RDB$FIELD_SUB_TYPE, B.RDB$FIELD_PRECISION, B.RDB$CHARACTER_SET_ID from RDB$PROCEDURE_PARAMETERS A, RDB$FIELDS B where ' + 'A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME and A.RDB$PARAMETER_TYPE = 0 and A.RDB$PROCEDURE_NAME = ' + AnsiQuotedStr(FObjectName, '''') + ' order by RDB$PARAMETER_NUMBER asc;') else @@ -358,7 +358,7 @@ if not (qryStoredProc.EOF and qryStoredProc.BOF) Then begin tmp := tmp + '(' + #13#10; - if FIsInterbase6 and (FSQLDialect = 3) then + if FIsInterbase6 {and (FSQLDialect = 3)} then tmp := tmp + ' ' + qryStoredProc.FieldByName('RDB$PARAMETER_NAME').AsString + ' ' + ConvertFieldType(qryStoredProc.FieldByName('RDB$FIELD_TYPE').AsInteger, qryStoredProc.FieldByName('RDB$FIELD_LENGTH').AsInteger, @@ -379,7 +379,7 @@ while not qryStoredProc.EOF do begin tmp := tmp + ',' + #13#10; - if FIsInterbase6 and (FSQLDialect = 3) then + if FIsInterbase6 {and (FSQLDialect = 3)} then tmp := tmp + ' ' + qryStoredProc.FieldByName('RDB$PARAMETER_NAME').AsString + ' ' + ConvertFieldType(qryStoredProc.FieldByName('RDB$FIELD_TYPE').AsInteger, qryStoredProc.FieldByName('RDB$FIELD_LENGTH').AsInteger, @@ -402,7 +402,7 @@ if qryStoredProc.IB_Transaction.Started then qryStoredProc.IB_Transaction.Commit; qryStoredProc.SQL.Clear; - if FIsInterbase6 and (FSQLDialect = 3) then + if FIsInterbase6 {and (FSQLDialect = 3)} then qryStoredProc.SQL.Add('select A.RDB$PARAMETER_NAME, B.RDB$FIELD_TYPE, B.RDB$FIELD_LENGTH, B.RDB$FIELD_SCALE, B.RDB$FIELD_SUB_TYPE, B.RDB$FIELD_PRECISION, B.RDB$CHARACTER_SET_ID from RDB$PROCEDURE_PARAMETERS A, RDB$FIELDS B where ' + 'A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME and A.RDB$PARAMETER_TYPE = 1 and A.RDB$PROCEDURE_NAME = ' + AnsiQuotedStr(FObjectName, '''') + ' order by RDB$PARAMETER_NUMBER asc;') else @@ -413,7 +413,7 @@ begin tmp := tmp + #13#10; tmp := tmp + 'returns (' + #13#10; - if FIsInterbase6 and (FSQLDialect = 3) then + if FIsInterbase6 {and (FSQLDialect = 3)} then begin tmp := tmp + ' ' + qryStoredProc.FieldByName('RDB$PARAMETER_NAME').AsString + ' ' + ConvertFieldType(qryStoredProc.FieldByName('RDB$FIELD_TYPE').AsInteger, @@ -438,7 +438,7 @@ while not qryStoredProc.EOF do begin tmp := tmp + ',' + #13#10; - if FIsInterbase6 and (FSQLDialect = 3) then + if FIsInterbase6 {and (FSQLDialect = 3)} then tmp := tmp + ' ' + qryStoredProc.FieldByName('RDB$PARAMETER_NAME').AsString + ' ' + ConvertFieldType(qryStoredProc.FieldByName('RDB$FIELD_TYPE').AsInteger, qryStoredProc.FieldByName('RDB$FIELD_LENGTH').AsInteger, @@ -3183,6 +3183,9 @@ { $Log$ +Revision 1.16 2007/06/15 21:31:32 rjmills +Numerous bug fixes and current work in progress + Revision 1.15 2006/10/22 06:04:28 rjmills Fixes and Updates for Look and Feel in WinXP Index: DropObject.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DropObject.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DropObject.dfm 1 Feb 2002 14:48:54 -0000 1.1.1.1 +++ DropObject.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -7,6 +7,7 @@ ClientHeight = 393 ClientWidth = 415 Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 @@ -80,7 +81,7 @@ Top = 360 Bitmap = { 494C010102000500040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000002000000001001000000000000010 + 0000000000003600000028000000400000002000000001002000000000000020 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -146,64 +147,192 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000010000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000007C007C000000000000000000001F001F001000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000040000000000000 - 00000000000000000000007C007C007C00400000000000001F001F001F001F00 - 1000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000007C007C004000000000 - 0000000000000000007C007C007C007C00400000000000001F001F001F001F00 - 1F00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000007C007C007C007C00400040 - 000000000000007C007C007C007C00400000000000001F001F001F001F001F00 - 1F00100000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000007C007C007C007C0040 - 0040007C007C007C007C007C00400000000000001F001F001F001F0010001F00 - 1F001F0010000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000007C007C007C007C - 007C007C007C007C007C00400000000000001F001F001F001F00100000001F00 - 1F001F001F000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000007C007C007C - 007C007C007C007C004000000000000000001F001F001F001000000000000000 - 1F001F001F001000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000007C007C - 007C007C00400040000000000000000000000000000000000000000000000000 - 00001F001F001F00100000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000007C007C007C - 007C007C007C0040004000000000000000000000000000000000000000000000 - 00001F001F001F001F0010000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000007C007C007C007C007C - 007C007C007C007C004000000000000000000000000000000000000000000000 - 000000001F001F001F001F001000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000007C007C007C0040 - 0040007C007C007C007C00400000000000000000000000000000000000000000 - 0000000000001F001F001F001F00100000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000007C007C00400000 - 00000000007C007C007C007C0040000000000000000000000000000000000000 - 00000000000000001F001F001F001F0010000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000007C007C007C007C000000000000000000000000000000000000 - 000000000000000000001F001F001F001F000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000007C007C0000000000000000000000000000000000000000 - 0000000000000000000000001F001F0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000008400000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000FF000000FF00000000000000000000000000000000000000 + 0000FF000000FF00000084000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 8400000000000000000000000000000000000000000000000000000000000000 + 00000000FF000000FF000000FF0000008400000000000000000000000000FF00 + 0000FF000000FF000000FF000000840000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000FF000000 + FF00000084000000000000000000000000000000000000000000000000000000 + FF000000FF000000FF000000FF0000008400000000000000000000000000FF00 + 0000FF000000FF000000FF000000FF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000FF000000FF000000 + FF000000FF0000008400000084000000000000000000000000000000FF000000 + FF000000FF000000FF0000008400000000000000000000000000FF000000FF00 + 0000FF000000FF000000FF000000FF0000008400000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000FF000000 + FF000000FF000000FF0000008400000084000000FF000000FF000000FF000000 + FF000000FF0000008400000000000000000000000000FF000000FF000000FF00 + 0000FF00000084000000FF000000FF000000FF00000084000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 + FF0000008400000000000000000000000000FF000000FF000000FF000000FF00 + 00008400000000000000FF000000FF000000FF000000FF000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 + 840000000000000000000000000000000000FF000000FF000000FF0000008400 + 0000000000000000000000000000FF000000FF000000FF000000840000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000FF000000FF000000FF000000FF0000008400000084000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FF000000FF000000FF0000008400 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000FF000000FF000000FF000000FF000000FF000000FF00000084000000 + 8400000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FF000000FF000000FF000000FF00 + 0000840000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000FF000000 + FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 + 8400000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF000000FF000000FF00 + 0000FF0000008400000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + FF000000FF000000FF0000008400000084000000FF000000FF000000FF000000 + FF00000084000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FF000000FF00 + 0000FF000000FF00000084000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + FF000000FF00000084000000000000000000000000000000FF000000FF000000 + FF000000FF000000840000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FF00 + 0000FF000000FF000000FF000000840000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000FF000000 + FF000000FF000000FF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FF000000FF000000FF000000FF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + FF000000FF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FF000000FF000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 Index: CodeSnippets.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/CodeSnippets.dfm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- CodeSnippets.dfm 23 Sep 2002 10:15:20 -0000 1.4 +++ CodeSnippets.dfm 15 Jun 2007 21:31:32 -0000 1.5 @@ -6,6 +6,7 @@ BorderStyle = bsSizeToolWin Caption = 'Code Snippets' Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = ANSI_CHARSET Font.Color = clWindowText Font.Height = -11 @@ -63,7 +64,7 @@ Left = 0 Top = 202 Width = 232 - Height = 122 + Height = 115 Align = alClient BevelOuter = bvNone Caption = 'Panel2' @@ -72,7 +73,7 @@ Left = 0 Top = 0 Width = 232 - Height = 122 + Height = 115 Align = alClient Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -88,7 +89,7 @@ end object pnlTransSettings: TPanel Left = 0 - Top = 324 + Top = 317 Width = 232 Height = 19 Align = alBottom Index: EditorConstraint.pas =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/EditorConstraint.pas,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- EditorConstraint.pas 13 Apr 2005 16:04:26 -0000 1.7 +++ EditorConstraint.pas 15 Jun 2007 21:31:32 -0000 1.8 @@ -21,6 +21,9 @@ { $Log$ +Revision 1.8 2007/06/15 21:31:32 rjmills +Numerous bug fixes and current work in progress + Revision 1.7 2005/04/13 16:04:26 rjmills *** empty log message *** @@ -523,6 +526,7 @@ procedure TfrmEditorConstraint.FormCreate(Sender: TObject); begin HelpContext := IDH_Add_Constraint_Dialog; + ValidateFormState(self); end; procedure TfrmEditorConstraint.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); Index: marathon.dpr =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/marathon.dpr,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- marathon.dpr 10 Feb 2007 21:59:24 -0000 1.14 +++ marathon.dpr 15 Jun 2007 21:31:32 -0000 1.15 @@ -117,6 +117,7 @@ GlobalQueriesText in 'GlobalQueriesText.pas'; {$R MarathonVersion.RES} +{$R Marathon.RES} var frmSplash : TfrmSplash; @@ -164,7 +165,11 @@ frmSplash.ShowModal; Application.CreateForm(TfrmMarathonMain, frmMarathonMain); if assigned(frmMarathonMain) then + begin LoadFormPosition(frmMarathonMain); + ValidateFormState(frmMarathonMain); + end; + Application.Run; finally MarathonScreen.Free; Index: EditorConstraint.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/EditorConstraint.dfm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- EditorConstraint.dfm 13 Apr 2005 16:04:26 -0000 1.3 +++ EditorConstraint.dfm 15 Jun 2007 21:31:32 -0000 1.4 @@ -15,7 +15,7 @@ Font.Style = [] KeyPreview = True OldCreateOrder = False - Position = poMainFormCenter + Position = poScreenCenter Scaled = False OnCreate = FormCreate OnKeyDown = FormKeyDown @@ -56,7 +56,7 @@ Top = 4 Width = 381 Height = 365 - ActivePage = tsFK + ActivePage = tsPK HotTrack = True TabOrder = 0 object tsPK: TTabSheet @@ -198,7 +198,7 @@ Width = 321 Height = 21 Style = csDropDownList - ItemHeight = 13 + ItemHeight = 0 TabOrder = 2 OnChange = cmbTablesChange end @@ -215,7 +215,7 @@ Width = 321 Height = 21 Style = csDropDownList - ItemHeight = 13 + ItemHeight = 0 TabOrder = 4 end object btnFKRefAdd: TButton @@ -240,7 +240,7 @@ Width = 325 Height = 21 Style = csDropDownList - ItemHeight = 13 + ItemHeight = 0 TabOrder = 7 end object btnFKAdd: TButton @@ -387,7 +387,7 @@ Width = 325 Height = 21 Style = csDropDownList - ItemHeight = 13 + ItemHeight = 0 TabOrder = 2 end object btnUniqueAdd: TButton Index: CompileDBObject.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/CompileDBObject.dfm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CompileDBObject.dfm 13 Apr 2005 16:04:26 -0000 1.3 +++ CompileDBObject.dfm 15 Jun 2007 21:31:32 -0000 1.4 @@ -7,6 +7,7 @@ ClientHeight = 203 ClientWidth = 335 Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Index: BlobViewer.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/BlobViewer.dfm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- BlobViewer.dfm 19 Oct 2006 03:36:13 -0000 1.3 +++ BlobViewer.dfm 15 Jun 2007 21:31:32 -0000 1.4 @@ -9,6 +9,7 @@ Color = clBtnFace Constraints.MinHeight = 258 Constraints.MinWidth = 491 + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Index: DatabaseManager.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DatabaseManager.dfm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- DatabaseManager.dfm 22 Oct 2006 06:04:28 -0000 1.6 +++ DatabaseManager.dfm 15 Jun 2007 21:31:32 -0000 1.7 @@ -8,6 +8,7 @@ Color = clBtnFace Constraints.MinHeight = 365 Constraints.MinWidth = 250 + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 @@ -15,7 +16,6 @@ Font.Style = [] KeyPreview = True OldCreateOrder = False - Position = poDefault Scaled = False OnClose = FormClose OnCreate = FormCreate Index: DebugLocalVariables.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DebugLocalVariables.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DebugLocalVariables.dfm 1 Feb 2002 14:48:52 -0000 1.1.1.1 +++ DebugLocalVariables.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -7,6 +7,7 @@ BorderStyle = bsSizeToolWin Caption = 'Local Variables' Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Index: EditorStoredProcedure.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/EditorStoredProcedure.dfm,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- EditorStoredProcedure.dfm 10 Feb 2007 22:01:14 -0000 1.10 +++ EditorStoredProcedure.dfm 15 Jun 2007 21:31:32 -0000 1.11 @@ -48,7 +48,7 @@ Top = 0 Width = 632 Height = 354 - ActivePage = tsExecute + ActivePage = tsStoredProc Align = alClient HotTrack = True TabOrder = 1 Index: DebugBreakPoints.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DebugBreakPoints.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DebugBreakPoints.dfm 1 Feb 2002 14:48:51 -0000 1.1.1.1 +++ DebugBreakPoints.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -7,6 +7,7 @@ BorderStyle = bsSizeToolWin Caption = 'Breakpoints' Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Index: DebugWatches.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DebugWatches.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DebugWatches.dfm 1 Feb 2002 14:48:52 -0000 1.1.1.1 +++ DebugWatches.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -6,6 +6,7 @@ BorderStyle = bsSizeToolWin Caption = 'Watches' Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 @@ -13,6 +14,7 @@ Font.Style = [] FormStyle = fsStayOnTop OldCreateOrder = False + Position = poScreenCenter Scaled = False OnClose = FormClose OnShow = FormShow Index: DebugAddBreakPoint.dfm =================================================================== RCS file: /cvsroot/gmarathon/gmarathon/src/Source/DebugAddBreakPoint.dfm,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- DebugAddBreakPoint.dfm 1 Feb 2002 14:48:51 -0000 1.1.1.1 +++ DebugAddBreakPoint.dfm 15 Jun 2007 21:31:32 -0000 1.2 @@ -6,12 +6,14 @@ ClientHeight = 287 ClientWidth = 358 Color = clBtnFace + DefaultMonitor = dmMainForm Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False + Position = poScreenCenter Scaled = False PixelsPerInch = 96 TextHeight = 13 |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:35:35
|
Update of /cvsroot/gmarathon/gmarathon/src/fastobj In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18892 Added Files: FastObj.inc FastObj.pas FastSys.pas PatchLib.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: PatchLib.pas --- unit PatchLib; (* Gabriel Corneanu (gabrielcorneanu(AT)gmail.com) Utilities for patching exe code Changes: Gabriel Corneanu - fixed a bug in RoundInt - Removed ExecAllocator and unnecessary functions - Simple implementation of heap allocator *) {$Include FastObj.inc} interface uses Windows; const SizePtr = SizeOf(Pointer); var PageSize: Cardinal; PageStartAddrMask: Cardinal; type {$ifndef Delphi6_Up} PPointer = ^Pointer; //PPointerArray = ^TPointerArray; //TPointerArray = array[0..0] of Pointer; {$endif} TPatchSimpleJump = packed record Jump: Byte; Offset: Integer; end; //define of TRegisters copied from FastMM4.pas type {Registers structure (for GetCPUID)} TRegisters = record RegEAX, RegEBX, RegECX, RegEDX: Integer; end; type //heap allocator class //can mark memory as executable if specified THeapAllocator = class(TObject) private FHeap : THandle; FFlags: DWord; public constructor Create(MarkExecutable: boolean); destructor Destroy; override; function GetBlock(ASize: integer): Pointer; procedure FreeBlock(ABlock: Pointer); end; //helper function function RoundInt(const AValue: Integer; ARoundBase: integer; RoundUp: boolean): integer; //generic functions procedure ReadMem(const Location, Buffer: Pointer; const Size: Cardinal); procedure WriteMem(const Location, Buffer: Pointer; const Size: Cardinal); //more specific functions function GetVMTPointer(AClass: TClass; Offset: Integer): Pointer; procedure SetVMTPointer(AClass: TClass; Offset: Integer; ATarget: Pointer); procedure WriteJumpBuffer(Location: Pointer; const Buffer: TPatchSimpleJump); procedure ReadJumpBuffer(Location: Pointer; var Buffer: TPatchSimpleJump); procedure SetJump(PatchLocation: Pointer; JumpTarget: Pointer; var PatchLocationBackup: TPatchSimpleJump); function GetActualAddress(AnAddr: Pointer): Pointer; {$ifndef Delphi6_Up} procedure RaiseLastOSError; {$endif} //Following three functions copied from FastMM4.pas //Returns true if the CPUID instruction is supported function IsCPUIDSupported: Boolean; //Gets the CPUID function GetCPUID(AInfoRequired: Integer): TRegisters; //Returns true if the CPU supports MMX function IsMMXSupported: Boolean; implementation uses SysUtils; var CurrentProcess: Cardinal; //round an int value to upper/lower nearest "Base" multiplier function RoundInt(const AValue: Integer; ARoundBase: integer; RoundUp: boolean): integer; begin if RoundUp then Result := (1 + (AValue - 1) div ARoundBase) * ARoundBase else Result := (AValue div ARoundBase) * ARoundBase; end; {$ifndef Delphi6_Up} procedure RaiseLastOSError; asm jmp RaiseLastWin32Error end; {$endif} procedure ReadMem(const Location, Buffer: Pointer; const Size: Cardinal); var ReadBytes: Cardinal; begin if (not ReadProcessMemory(CurrentProcess, Location, Buffer, Size, ReadBytes)) or (ReadBytes <> Size) then RaiseLastOSError; end; procedure WriteMem(const Location, Buffer: Pointer; const Size: Cardinal); var WrittenBytes: Cardinal; begin if (not WriteProcessMemory(CurrentProcess, Location, Buffer, Size, WrittenBytes)) or (WrittenBytes <> Size) then RaiseLastOSError; // make sure that everything keeps working in a dual processor setting FlushInstructionCache(CurrentProcess, Location, Size); end; //copied from JCL, but simplified function GetVMTPointer(AClass: TClass; Offset: Integer): Pointer; begin Result := PPointer(Integer(AClass) + Offset)^; end; procedure SetVMTPointer(AClass: TClass; Offset: Integer; ATarget: Pointer); begin WriteMem(Pointer(Integer(AClass) + Offset), @ATarget, SizeOf(ATarget)); end; procedure WriteJumpBuffer(Location: Pointer; const Buffer: TPatchSimpleJump); begin WriteMem(Location, @Buffer, SizeOf(Buffer)); end; procedure ReadJumpBuffer(Location: Pointer; var Buffer: TPatchSimpleJump); begin ReadMem(Location, @Buffer, SizeOf(Buffer)); end; procedure SetJump(PatchLocation: Pointer; JumpTarget: Pointer; var PatchLocationBackup: TPatchSimpleJump); var Buffer: TPatchSimpleJump; begin ReadJumpBuffer(PatchLocation, PatchLocationBackup); Buffer.Jump := $E9; Buffer.Offset := Integer(JumpTarget) - (Integer(PatchLocation) + SizeOf(Buffer)); WriteJumpBuffer(PatchLocation, Buffer); end; { returns real address of proc/var if it is located in run-time package } function GetDirectedAddr(AnAddr: Pointer): Pointer; type PAbsoluteIndirectJmp = ^TAbsoluteIndirectJmp; TAbsoluteIndirectJmp = packed record OpCode: Word; //$FF25(Jmp, FF /4), $FF15(Call, FF /2) Addr: ^Pointer; end; PRelativeJmpOrCall = ^TRelativeJmpOrCall; TRelativeJmpOrCall = packed record OpCode: Byte; //$E9(Jmp),$E8(Call) Offset: LongInt; end; begin if Assigned(AnAddr) then begin if (PAbsoluteIndirectJmp(AnAddr).OpCode = $25FF) or (PAbsoluteIndirectJmp(AnAddr).OpCode = $15FF) then begin Result := PAbsoluteIndirectJmp(AnAddr).Addr^; end else if (PRelativeJmpOrCall(AnAddr).OpCode = $E9){ or (PRelativeJmpOrCall(AnAddr).OpCode = $E8)} then begin Result := Pointer(Integer(AnAddr) + SizeOf(TRelativeJmpOrCall) + PRelativeJmpOrCall(AnAddr).Offset); end else begin Result := AnAddr; end; end else begin Result := nil; end; end; type PWin9xDebugThunk = ^TWin9xDebugThunk; TWin9xDebugThunk = packed record PUSH: Byte; // PUSH instruction opcode ($68) Addr: Pointer; // The actual address of the DLL routine JMP: Byte; // JMP instruction opcode ($E9) Rel: Integer; // Relative displacement (a Kernel32 address) end; function IsWin9xDebugThunk(AnAddr: Pointer): Boolean; { -> EAX: AnAddr } asm TEST EAX, EAX JZ @@NoThunk CMP BYTE PTR [EAX].TWin9xDebugThunk.PUSH, $68 JNE @@NoThunk CMP BYTE PTR [EAX].TWin9xDebugThunk.JMP, $E9 JNE @@NoThunk XOR EAX, EAX MOV AL, 1 JMP @@exit @@NoThunk: XOR EAX, EAX @@exit: end; function GetActualAddress(AnAddr: Pointer): Pointer; begin if Assigned(AnAddr) then begin if (SysUtils.Win32Platform <> VER_PLATFORM_WIN32_NT) and IsWin9xDebugThunk(AnAddr) then AnAddr := PWin9xDebugThunk(AnAddr).Addr; Result := GetDirectedAddr(AnAddr); end else Result := nil; end; //copied from FastMM4.pas {----------------Utility Functions------------------} //Returns true if the CPUID instruction is supported function IsCPUIDSupported: Boolean; asm pushfd pop eax mov edx, eax xor eax, $200000 push eax popfd pushfd pop eax xor eax, edx setnz al end; //Gets the CPUID function GetCPUID(AInfoRequired: Integer): TRegisters; asm push ebx push esi mov esi, edx //cpuid instruction {$ifndef Delphi6_Up} db $0f, $a2 {$else} cpuid {$endif} //Save registers mov TRegisters[esi].RegEAX, eax mov TRegisters[esi].RegEBX, ebx mov TRegisters[esi].RegECX, ecx mov TRegisters[esi].RegEDX, edx pop esi pop ebx end; //Returns true if the CPU supports MMX function IsMMXSupported: Boolean; var LReg: TRegisters; begin if IsCPUIDSupported then begin //Get the CPUID LReg := GetCPUID(1); //Bit 23 must be set for MMX support Result := LReg.RegEDX and $800000 <> 0; end else Result := False; end; { THeapAllocator } constructor THeapAllocator.Create(MarkExecutable: boolean); begin inherited Create; FHeap := HeapCreate(0, 0, 0); if MarkExecutable then FFlags := PAGE_EXECUTE_READWRITE else FFlags := 0; end; function THeapAllocator.GetBlock(ASize: integer): Pointer; var OldP : DWord; begin Result := HeapAlloc(FHeap, 0, ASize); if (Result <> nil) and (FFlags <> 0) then if not VirtualProtect(Result, ASize, FFlags, OldP) then RaiseLastOSError; end; procedure THeapAllocator.FreeBlock(ABlock: Pointer); begin HeapFree(FHeap, 0, ABlock); end; destructor THeapAllocator.Destroy; begin HeapDestroy(FHeap); inherited Destroy; end; initialization CurrentProcess := GetCurrentProcess; finalization end. --- NEW FILE: FastObj.inc --- {$ifdef VER180} //Delphi10 {$define Delphi6_Up} {$endif} {$ifdef VER170} //Delphi9 {$define Delphi6_Up} {$endif} {$ifdef VER160} //Delphi8 {$define Delphi6_Up} {$endif} {$ifdef VER150} //Delphi7 {$define Delphi6_Up} {$endif} {$ifdef VER140} //Delphi6, BCB6 {$define Delphi6_Up} {$endif} ///////////////////////////////////////////////// {$RANGECHECKS OFF} {$BOOLEVAL OFF} {$OVERFLOWCHECKS OFF} {$OPTIMIZATION ON} {$STACKFRAMES OFF} {$ALIGN ON} //define this to use direct calls to FastMM; it saves a few calls {$define UseFastMM} //define this to directly start the global optimization //when global optimization is OFF, use OptimizeClass to prepare //individual classes, or call InitAutoOptimize {$define AutoOptimize} //define this to enable auto optimization only for classes //which do NOT implement their own NewInstance {$define SafeAutoOptimize} //define this to enable auto optimization for classes //which are known to be safe, using a list of names //it is a little slower because of string lookup, //and I don't know if it really gives more speed //requires SafeAutoOptimize {$define SafeNamesAutoOptimize} //define this to enable processing even when instancesize mod 4 <> 0! //this rounds up all instance allocations //normally this is no problem, because memory managers already do it //it is also not necessary when alignment is > 4, so keep it disabled {.$define ForceRoundInstanceSize} //define this to directly apply the RTL patches in fastsys //otherwise one can always call PatchSystemFunctions {$define AutoPatchRTL} {.$define UseSysDynArrayClear} {$define EnableMMX} {$define ForceMMX} {$ifndef EnableMMX} {$undef ForceMMX} {$endif} //to output some debug lines, to identify optimized and skipped classes {.$define FastObjDebug} //just to debug some asm functions {.$define PurePascal} --- NEW FILE: FastSys.pas --- unit FastSys; (* Gabriel Corneanu (gabrielcorneanu(AT)gmail.com) Part of the FastObj project. It contains mainly patches to some RTL functions. JiYuan Xie (gdxjy at hotmail.com) - moved all conditional defines to FastObj.inc - added Delphi5 support (not tested) - added support for being used in package or dll which sharing classes, TExecBlockAllocator has been modified to support this - (Maybe) Faster System.@New, System.@Dispose, System.@InitializeArray, System.@FinalizeArray(System.@DynArrayClear need patched too for this), System.@IsClass TODO: - LOTS of testing :) - Measure if the patching really make sense [...1055 lines suppressed...] //new constants asm lea eax, system.@new mov [NewAddr], eax lea eax, system.@dispose mov [DisposeAddr], eax lea eax, system.@InitializeArray mov [InitializeArrayAddr], eax lea eax, system.@DynArrayClear mov [DynArrayClearAddr], eax lea eax, system.@FinalizeArray mov [FinalizeArrayAddr], eax lea eax, system.@IsClass mov [IsClassAddr], eax end; {$ifdef AutoPatchRTL} PatchSystemFunctions; {$endif} end. --- NEW FILE: FastObj.pas --- unit FastObj; (* //Gabriel Corneanu (gabrielcorneanu(AT)gmail.com) //General purpose object create/destroy optimization Gabriel Corneanu - added SafeAutoOptimize mode; read comments - added InitAutoOptimize function, can be called from outside (instead of define AutoOptimize) - Simplified list handling - avoid FreeInstance override when reimplemented in a class; it's a sign for a special case! - solved instance size not multiple of 4 problem - much simplified exe block allocation - some MMX code (from fastcode), suggested by JiYuan Xie and much simplified (no FPU - I measured it much slower) - NewInstanceCopyLargeSizeWithFill optimized and rounded clear part - Store only template header (if header much smaller than template size) - distinguish between newinstance and freeinstance redirection [...1449 lines suppressed...] if NeedRegisterModuleUnload then AddModuleUnloadProc(ModuleUnload); finalization if vTObjectNewInstanceJumpBackup.Jump <> 0 then WriteJumpBuffer(AddrTObjectNewInstance, vTObjectNewInstanceJumpBackup); {$ifdef SafeNamesAutoOptimize} SafeClassList.Free; {$endif} if NeedRegisterModuleUnload then RemoveModuleUnloadProc(ModuleUnload); CleanupList; DeleteCriticalSection(vAcceleratorCS); Allocator.Free; end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:35:35
|
Update of /cvsroot/gmarathon/gmarathon/src/fastobj/Test In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18892/Test Added Files: PoolTest.dpr main.dfm main.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: PoolTest.dpr --- program PoolTest; uses // FastMM4, // FastMM4Messages, PatchLib in '..\PatchLib.pas', FastObj in '..\FastObj.pas', FastSys in '..\FastSys.pas', Forms, main in 'main.pas' {MainForm}; {$R *.res} begin FastObj.InitAutoOptimize; Application.Initialize; Application.CreateForm(TMainForm, MainForm); Application.Run; end. --- NEW FILE: main.pas --- unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, StdActns, xmldom, msxmldom, XMLDoc, XMLIntf; type TMainForm = class(TForm) BtnLoop: TButton; LbLoop: TLabel; procedure BtnLoopClick(Sender: TObject); private { Private declarations } procedure DoLoop; public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.dfm} uses fastobj; type TBaseClass = class(TInterfacedObject) //TBaseClass = class(TXMLDocument) //TBaseClass = class(TObject) private end; TTestClass = class(TBaseClass) private FExtraField : array[1..50] of dword; //FExtraField : array[1..50] of dword; FHeaderFld : integer; //FStr : string; //FV : variant; //FStr2 : string; //FV2 : variant; public //class function NewInstance: TObject; override; //FStrN : array[0..0] of string; end; procedure TMainForm.DoLoop; const LoopCount = 100000; var I, J : integer; O : array[1..100] of TTestClass; T1, T2 : Cardinal; begin T1 := GetTickCount; for I := 1 to LoopCount do begin for J := Low(O) to High(O) do begin O[J] := TTestClass.Create; end; for J := Low(O) to High(O) do begin O[J].Free; end; if I mod 10 = 0 then begin T2 := GetTickCount; if T2 - T1 > 1000 then begin LbLoop.Caption := Format('%.1n%%', [I*100/LoopCount]); Update; T1 := T2; end; end; end; end; procedure TMainForm.BtnLoopClick(Sender: TObject); var T : Cardinal; begin LbLoop.Caption := 'Loop...'; Update; T := GetTickCount; DoLoop; T := GetTickCount - T; LbLoop.Caption := LbLoop.Caption + Format(' %d ms', [T]); end; { TTestClass } //simple way to increase the header size { class function TTestClass.NewInstance: TObject; begin Result := inherited NewInstance; //TTestClass(Result).FHeaderFld := 1; end; } initialization //this is needed when using safe mode, if NewInstance is overridden //fastobj.OptimizeClass(TTestClass); //simple test for packages //UnloadPackage(LoadPackage('webdsnap90.bpl')); end. --- NEW FILE: main.dfm --- object MainForm: TMainForm Left = 83 Top = 181 Caption = 'MainForm' ClientHeight = 62 ClientWidth = 422 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -14 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 120 TextHeight = 17 object LbLoop: TLabel Left = 145 Top = 17 Width = 46 Height = 17 Caption = 'LbLoop' end object BtnLoop: TButton Left = 17 Top = 9 Width = 97 Height = 26 Caption = 'Loop' TabOrder = 0 OnClick = BtnLoopClick end end |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:35:26
|
Update of /cvsroot/gmarathon/gmarathon/src/fastcode/fastmove In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18568/fastmove Added Files: FastMove.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMove.pas --- unit FastMove; (* Copyright (c) 2006, John O'Harrow (jo...@el...) This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be [...1529 lines suppressed...] if isSSE3 in CPU.InstructionSupport then Move := MoveJOH_SSE3_10 {Processor Supports SSE3} else if isSSE2 in CPU.InstructionSupport then Move := MoveJOH_SSE2_10 {Processor Supports SSE2} else if isSSE in CPU.InstructionSupport then Move := MoveJOH_SSE_10 {Processor Supports SSE} else if isMMX in CPU.InstructionSupport then Move := MoveJOH_MMX_10 {Processor Supports MMX} else Move := MoveJOH_IA32_10; {Processor does not Support MMX or SSE} CacheLimit := CPU.L2CacheSize * -512; {Used within SSE Based Moves} {$ENDIF} {$IFDEF PatchSystemMove} PatchMove; {Patch Delphi's System.Move} {$ENDIF} end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:35:25
|
Update of /cvsroot/gmarathon/gmarathon/src/fastcode/061/Non.RTL In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18568/061/Non.RTL Added Files: FastCodeCharPos.pas FastcodeGCDUnit.pas FastcodeMaxIntUnit.pas FastcodePosIExUnit.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastcodeMaxIntUnit.pas --- unit FastcodeMaxIntUnit; (* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Fastcode * * The Initial Developer of the Original Code is Fastcode * * Portions created by the Initial Developer are Copyright (C) 2002-2005 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Charalabos Michael <chm...@cr...> * Lars Blok Gravengaard * Aleksandr Sharahov * * BV Version: 1.81 * ***** END LICENSE BLOCK ***** *) interface {$I Fastcode.inc} type FastcodeMaxIntFunction = function(const A, B : Integer) : Integer; {Functions shared between Targets} function Max_LBG_IA32_1(const A, B : Integer) : Integer; function Max_Sha_Pas_1(const a, b: integer): integer; {Functions not shared between Targets} {Functions} const FastcodeMaxIntP4R: FastcodeMaxIntFunction = Max_Sha_Pas_1; FastcodeMaxIntP4N: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntPMY: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntPMD: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntAMD64: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntAMD64_SSE3: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntIA32SizePenalty: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntIA32: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntMMX: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntSSESizePenalty: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntSSE: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntSSE2: FastcodeMaxIntFunction = Max_LBG_IA32_1; FastcodeMaxIntPascalSizePenalty: FastcodeMaxIntFunction = Max_Sha_Pas_1; FastcodeMaxIntPascal: FastcodeMaxIntFunction = Max_Sha_Pas_1; implementation function Max_LBG_IA32_1(const A, B : Integer) : Integer; asm // A in EAX // B in EDX CMP EDX,EAX // Is edx > eax ? CMOVG EAX,EDX // Conditional move if greater // Does not affect the destination operand if the condition is false. end; {$UNDEF SaveQ} {$IFOPT Q+} {$DEFINE SaveQ} {$Q-} {$ENDIF} function Max_Sha_Pas_1(const a, b: integer): integer; begin; Result:=a + (b-a) and (ord(a>b) - 1); end; {$IFDEF SaveQ} {$UNDEF SaveQ} {$Q+} {$ENDIF} end. --- NEW FILE: FastCodeCharPos.pas --- unit FastCodeCharPos; (* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Fastcode * * The Initial Developer of the Original Code is Fastcode * * Portions created by the Initial Developer are Copyright (C) 2002-2004 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Charalabos Michael <chm...@cr...> * John O'Harrow <jo...@el...> * Aleksandr Sharahov * * BV Version: 5.20 * ***** END LICENSE BLOCK ***** *) interface {$I FastCode.inc} type FastCodeCharPosFunction = function(Ch: Char; const Str : AnsiString): Integer; {Functions shared between Targets} function CharPos_JOH_SSE_1(Ch : Char; const Str : AnsiString) : Integer; function CharPos_JOH_SSE2_1(Ch : Char; const Str : AnsiString) : Integer; function CharPos_Sha_Pas_2(ch: char; const s: AnsiString): integer; {Functions not shared between Targets} function CharPos_JOH_MMX_1(Ch : Char; const Str : AnsiString) : Integer; function CharPos_Sha_IA32_1(ch: char; const s: AnsiString): integer; function CharPos_Sha_Pas_1(ch: char; const s: AnsiString): integer; {Functions} const FastCodeCharPosP4R: FastCodeCharPosFunction = CharPos_JOH_SSE2_1; FastCodeCharPosP4N: FastCodeCharPosFunction = CharPos_JOH_SSE2_1; FastCodeCharPosPMY: FastCodeCharPosFunction = CharPos_JOH_SSE2_1; FastCodeCharPosPMD: FastCodeCharPosFunction = CharPos_JOH_SSE2_1; FastCodeCharPosAMD64: FastCodeCharPosFunction = CharPos_JOH_SSE2_1; FastCodeCharPosAMD64_SSE3: FastCodeCharPosFunction = CharPos_JOH_SSE2_1; FastCodeCharPosIA32SizePenalty: FastCodeCharPosFunction = CharPos_Sha_IA32_1; FastCodeCharPosIA32: FastCodeCharPosFunction = CharPos_Sha_Pas_2; FastCodeCharPosMMX: FastCodeCharPosFunction = CharPos_JOH_MMX_1; FastCodeCharPosSSESizePenalty: FastCodeCharPosFunction = CharPos_JOH_SSE_1; FastCodeCharPosSSE: FastCodeCharPosFunction = CharPos_JOH_SSE_1; FastCodeCharPosSSE2: FastCodeCharPosFunction = CharPos_JOH_SSE2_1; FastCodeCharPosPascalSizePenalty: FastCodeCharPosFunction = CharPos_Sha_Pas_1; FastCodeCharPosPascal: FastCodeCharPosFunction = CharPos_Sha_Pas_2; implementation function CharPos_JOH_SSE2_1(Ch : Char; const Str : AnsiString) : Integer; asm test edx, edx jz @@NullString mov ecx, [edx-4] push ebx mov ebx, eax cmp ecx, 16 jl @@Small @@NotSmall: mov ah, al {Fill each Byte of XMM1 with AL} movd xmm1, eax pshuflw xmm1, xmm1, 0 pshufd xmm1, xmm1, 0 @@First16: movups xmm0, [edx] {Unaligned} pcmpeqb xmm0, xmm1 {Compare First 16 Characters} pmovmskb eax, xmm0 test eax, eax jnz @@FoundStart {Exit on any Match} cmp ecx, 32 jl @@Medium {If Length(Str) < 32, Check Remainder} @@Align: sub ecx, 16 {Align Block Reads} push ecx mov eax, edx neg eax and eax, 15 add edx, ecx neg ecx add ecx, eax @@Loop: movaps xmm0, [edx+ecx] {Aligned} pcmpeqb xmm0, xmm1 {Compare Next 16 Characters} pmovmskb eax, xmm0 test eax, eax jnz @@Found {Exit on any Match} add ecx, 16 jle @@Loop pop eax {Check Remaining Characters} add edx, 16 add eax, ecx {Count from Last Loop End Position} jmp dword ptr [@@JumpTable2-ecx*4] nop nop @@NullString: xor eax, eax {Result = 0} ret nop @@FoundStart: bsf eax, eax {Get Set Bit} pop ebx inc eax {Set Result} ret nop nop @@Found: pop edx bsf eax, eax {Get Set Bit} add edx, ecx pop ebx lea eax, [eax+edx+1] {Set Result} ret @@Medium: add edx, ecx {End of String} mov eax, 16 {Count from 16} jmp dword ptr [@@JumpTable1-64-ecx*4] nop nop @@Small: add edx, ecx {End of String} xor eax, eax {Count from 0} jmp dword ptr [@@JumpTable1-ecx*4] nop @@JumpTable1: dd @@NotFound, @@01, @@02, @@03, @@04, @@05, @@06, @@07 dd @@08, @@09, @@10, @@11, @@12, @@13, @@14, @@15, @@16 @@JumpTable2: dd @@16, @@15, @@14, @@13, @@12, @@11, @@10, @@09, @@08 dd @@07, @@06, @@05, @@04, @@03, @@02, @@01, @@NotFound @@16: add eax, 1 cmp bl, [edx-16] je @@Done @@15: add eax, 1 cmp bl, [edx-15] je @@Done @@14: add eax, 1 cmp bl, [edx-14] je @@Done @@13: add eax, 1 cmp bl, [edx-13] je @@Done @@12: add eax, 1 cmp bl, [edx-12] je @@Done @@11: add eax, 1 cmp bl, [edx-11] je @@Done @@10: add eax, 1 cmp bl, [edx-10] je @@Done @@09: add eax, 1 cmp bl, [edx-9] je @@Done @@08: add eax, 1 cmp bl, [edx-8] je @@Done @@07: add eax, 1 cmp bl, [edx-7] je @@Done @@06: add eax, 1 cmp bl, [edx-6] je @@Done @@05: add eax, 1 cmp bl, [edx-5] je @@Done @@04: add eax, 1 cmp bl, [edx-4] je @@Done @@03: add eax, 1 cmp bl, [edx-3] je @@Done @@02: add eax, 1 cmp bl, [edx-2] je @@Done @@01: add eax, 1 cmp bl, [edx-1] je @@Done @@NotFound: xor eax, eax pop ebx ret @@Done: pop ebx end; function CharPos_JOH_MMX_1(Ch : Char; const Str : AnsiString) : Integer; asm TEST EDX, EDX {Str = NIL?} JZ @@NotFound {Yes - Jump} MOV ECX, [EDX-4] {ECX = Length(Str)} CMP ECX, 8 JG @@NotSmall TEST ECX, ECX JZ @@NotFound {Exit if Length = 0} @@Small: CMP AL, [EDX] JZ @Found1 DEC ECX JZ @@NotFound CMP AL, [EDX+1] JZ @Found2 DEC ECX JZ @@NotFound CMP AL, [EDX+2] JZ @Found3 DEC ECX JZ @@NotFound CMP AL, [EDX+3] JZ @Found4 DEC ECX JZ @@NotFound CMP AL, [EDX+4] JZ @Found5 DEC ECX JZ @@NotFound CMP AL, [EDX+5] JZ @Found6 DEC ECX JZ @@NotFound CMP AL, [EDX+6] JZ @Found7 DEC ECX JZ @@NotFound CMP AL, [EDX+7] JZ @Found8 @@NotFound: XOR EAX, EAX RET @Found1: MOV EAX, 1 RET @Found2: MOV EAX, 2 RET @Found3: MOV EAX, 3 RET @Found4: MOV EAX, 4 RET @Found5: MOV EAX, 5 RET @Found6: MOV EAX, 6 RET @Found7: MOV EAX, 7 RET @Found8: MOV EAX, 8 RET @@NotSmall: {Length(Str) > 8} MOV AH, AL ADD EDX, ECX MOVD MM0, EAX PUNPCKLWD MM0, MM0 PUNPCKLDQ MM0, MM0 PUSH ECX {Save Length} NEG ECX @@First8: MOVQ MM1, [EDX+ECX] ADD ECX, 8 PCMPEQB MM1, MM0 {Compare All 8 Bytes} PACKSSWB MM1, MM1 {Pack Result into 4 Bytes} MOVD EAX, MM1 TEST EAX, EAX JNZ @@Matched {Exit on Match at any Position} CMP ECX, -8 {Check if Next Loop would pass String End} JGE @@Last8 @@Align: {Align to Previous 8 Byte Boundary} LEA EAX, [EDX+ECX] AND EAX, 7 {EAX -> 0 or 4} SUB ECX, EAX @@Loop: MOVQ MM1, [EDX+ECX] ADD ECX, 8 PCMPEQB MM1, MM0 {Compare All 8 Bytes} PACKSSWB MM1, MM1 {Pack Result into 4 Bytes} MOVD EAX, MM1 TEST EAX, EAX JNZ @@Matched {Exit on Match at any Position} CMP ECX, -8 {Check if Next Loop would pass String End} {$IFNDEF NoUnroll} JGE @@Last8 MOVQ MM1, [EDX+ECX] ADD ECX, 8 PCMPEQB MM1, MM0 {Compare All 8 Bytes} PACKSSWB MM1, MM1 {Pack Result into 4 Bytes} MOVD EAX, MM1 TEST EAX, EAX JNZ @@Matched {Exit on Match at any Position} CMP ECX, -8 {Check if Next Loop would pass String End} {$ENDIF} JL @@Loop @@Last8: MOVQ MM1, [EDX-8] {Position for Last 8 Used Characters} POP EDX {Original Length} PCMPEQB MM1, MM0 {Compare All 8 Bytes} PACKSSWB MM1, MM1 {Pack Result into 4 Bytes} MOVD EAX, MM1 TEST EAX, EAX JNZ @@Matched2 {Exit on Match at any Position} EMMS RET {Finished - Not Found} @@Matched: {Set Result from 1st Match in EDX} POP EDX {Original Length} ADD EDX, ECX @@Matched2: EMMS SUB EDX, 8 {Adjust for Extra ADD ECX,8 in Loop} TEST AL, AL JNZ @@MatchDone {Match at Position 1 or 2} TEST AH, AH JNZ @@Match1 {Match at Position 3 or 4} SHR EAX, 16 TEST AL, AL JNZ @@Match2 {Match at Position 5 or 6} SHR EAX, 8 ADD EDX, 6 JMP @@MatchDone @@Match2: ADD EDX, 4 JMP @@MatchDone @@Match1: SHR EAX, 8 {AL <- AH} ADD EDX, 2 @@MatchDone: XOR EAX, 2 AND EAX, 3 {EAX <- 1 or 2} ADD EAX, EDX end; function CharPos_JOH_SSE_1(Ch : Char; const Str : AnsiString) : Integer; asm TEST EDX, EDX {Str = NIL?} JZ @@NotFound {Yes - Jump} MOV ECX, [EDX-4] {ECX = Length(Str)} CMP ECX, 8 JG @@NotSmall TEST ECX, ECX JZ @@NotFound {Exit if Length = 0} @@Small: CMP AL, [EDX] JZ @Found1 DEC ECX JZ @@NotFound CMP AL, [EDX+1] JZ @Found2 DEC ECX JZ @@NotFound CMP AL, [EDX+2] JZ @Found3 DEC ECX JZ @@NotFound CMP AL, [EDX+3] JZ @Found4 DEC ECX JZ @@NotFound CMP AL, [EDX+4] JZ @Found5 DEC ECX JZ @@NotFound CMP AL, [EDX+5] JZ @Found6 DEC ECX JZ @@NotFound CMP AL, [EDX+6] JZ @Found7 DEC ECX JZ @@NotFound CMP AL, [EDX+7] JZ @Found8 @@NotFound: XOR EAX, EAX RET @Found1: MOV EAX, 1 RET @Found2: MOV EAX, 2 RET @Found3: MOV EAX, 3 RET @Found4: MOV EAX, 4 RET @Found5: MOV EAX, 5 RET @Found6: MOV EAX, 6 RET @Found7: MOV EAX, 7 RET @Found8: MOV EAX, 8 RET @@NotSmall: MOV AH, AL ADD EDX, ECX MOVD MM0, EAX PSHUFW MM0, MM0, 0 PUSH ECX NEG ECX @@First8: MOVQ MM1, [EDX+ECX] ADD ECX, 8 PCMPEQB MM1, MM0 {Compare Next 8 Bytes} PMOVMSKB EAX, MM1 TEST EAX, EAX JNZ @@Matched {Exit on Match at any Position} CMP ECX, -8 {Check if Next Loop would pass String End} JGE @@Last8 @@Align: LEA EAX, [EDX+ECX] AND EAX, 7 SUB ECX, EAX @@Loop: {Loop Unrolled 2X} MOVQ MM1, [EDX+ECX] ADD ECX, 8 PCMPEQB MM1, MM0 {Compare Next 8 Bytes} PMOVMSKB EAX, MM1 TEST EAX, EAX JNZ @@Matched {Exit on Match at any Position} CMP ECX, -8 {Check if Next Loop would pass String End} {$IFNDEF NoUnroll} JGE @@Last8 MOVQ MM1, [EDX+ECX] ADD ECX, 8 PCMPEQB MM1, MM0 {Compare Next 8 Bytes} PMOVMSKB EAX, MM1 TEST EAX, EAX JNZ @@Matched {Exit on Match at any Position} CMP ECX, -8 {Check if Next Loop would pass String End} {$ENDIF} JL @@loop @@Last8: PCMPEQB MM0, [EDX-8] POP ECX {Original Length} PMOVMSKB EAX, MM0 TEST EAX, EAX JNZ @@Matched2 EMMS RET {Finished} @@Matched: {Set Result from 1st Match in EcX} POP EDX {Original Length} ADD ECX, EDX @@Matched2: EMMS BSF EDX, EAX LEA EAX, [EDX+ECX-7] end; function CharPos_Sha_IA32_1(ch: char; const s: AnsiString): integer; asm test edx,edx jz @@ret0 push ebp push ebx push edx push esi push edi mov ecx,[edx-4] xor ecx,-1 jz @@pop0 mov ah,al; add ecx,1 movzx edi,ax; and ecx,-4 shl eax,16; sub edx,ecx or edi,eax; mov ebp,$80808080 mov eax,edi xor edi,[ecx+edx] mov esi,eax lea ebx,[edi-$01010101] xor edi,-1 and ebx,edi add ecx,4 jge @@last1 and ebx,ebp jnz @@found4; xor esi,[ecx+edx] mov ebp,ebp //nop @@find: lea ebx,[esi-$01010101] xor esi,-1 and ebx,esi mov edi,[ecx+edx+4] add ecx,8 jge @@last2 xor edi,eax and ebx,ebp mov esi,[ecx+edx] jnz @@found0 lea ebx,[edi-$01010101] xor edi,-1 and ebx,edi xor esi,eax and ebx,ebp jz @@find; @@found4: add ecx,4 @@found0: shr ebx,8; jc @@inc0 shr ebx,8; jc @@inc1 shr ebx,8; jc @@inc2 @@inc3: inc ecx @@inc2: inc ecx @@inc1: inc ecx @@inc0: pop edi; pop esi; lea eax,[ecx+edx-7] pop edx; pop ebx; sub eax,edx pop ebp; cmp eax,[edx-4] jg @@ret0 ret @@last2: and ebx,ebp jnz @@found0 xor edi,eax lea ebx,[edi-$01010101] xor edi,-1 and ebx,edi @@last1: and ebx,ebp jnz @@found4; @@pop0: pop edi pop esi pop edx pop ebx pop ebp @@ret0: xor eax,eax //ret end; function CharPos_Sha_Pas_1(ch: char; const s: AnsiString): integer; var c, d, Mask, Sign, Lim, SaveLenAddr: integer; label Next, Last4, Last3, Found1, Found2, NotFound; begin; Result:=integer(s)-4; // length address Mask:=byte(ch); // start creation mask Lim:=Result; c:=-4; if Result=-4 then goto NotFound; // if empty string c:=c and pIntegerArray(Lim)[0]; // c:=length - length mod 4 if c=0 then goto Last3; // if length<4 d:=Mask; Mask:=(Mask shl 8); Lim:=Lim+c; // main loop limit Mask:=Mask or d; cardinal(Sign):=$80808080; // sign bit in each byte c:=Mask; SaveLenAddr:=Result; // save address of length Mask:=Mask shl 16; d:=pIntegerArray(Result)[1]; // first dword of string Mask:=Mask or c; // mask created inc(Result,4); d:=d xor Mask; // zero in matched byte if cardinal(Result)>=cardinal(Lim) // if last full dword then goto Last4; Next: c:=integer(@pchar(d)[-$01010101]); // minus 1 from each byte d:=d xor (-1); c:=c and d; // set sign on in matched byte d:=Mask; if c and Sign<>0 then goto Found1; // if matched in any byte d:=d xor pIntegerArray(Result)[1]; // zero in matched byte inc(Result,4); if cardinal(Result)<cardinal(Lim) // if not last full dword then goto Next; Last4: // last dword c:=integer(@pchar(d)[-$01010101]); // minus 1 from each byte d:=d xor (-1); c:=c and d; // set sign on in matched byte Lim:=SaveLenAddr; // get address of length if c and Sign<>0 then goto Found2; // if matched in any byte Last3: // last (length mod 4) bytes c:=3; c:=c and pIntegerArray(Lim)[0]; if c=0 then goto NotFound; if byte(Mask)=byte(pchar(Result)[4]) then begin; Result:=Result-Lim+1; exit; end; if c=1 then goto NotFound; if byte(Mask)=byte(pchar(Result)[5]) then begin; Result:=Result-Lim+2; exit; end; if c=2 then goto NotFound; if byte(Mask)=byte(pchar(Result)[6]) then begin; Result:=Result-Lim+3; exit; end; NotFound: Result:=0; exit; goto NotFound; // supress compiler warnings Found1: // not last dword ... Lim:=SaveLenAddr; // ... need address of length Found2: // finally find matched byte c:=c and Sign; // get sign of each byte dec(Result,Lim); // index of highest byte in Result if word(c)<>0 then dec(Result,2) else c:=c shr 16; if byte(c)<>0 then dec(Result); end; function CharPos_Sha_Pas_2(ch: char; const s: AnsiString): integer; const cMinusOnes = -$01010101; cSignums = $80808080; var Ndx, Len, c, d, Mask, Sign, Save, SaveEnd: integer; label Small, Middle, Large, Found0, Found1, Found2, Found3, NotFound, Matched, MatchedPlus1, MatchedMinus1, NotMatched, Return; begin c:=integer(@pchar(integer(s))[-4]); if c=-4 then goto NotFound; Len:=pinteger(c)^; if Len>24 then goto Large; Ndx:=4; if Ndx>Len then goto Small; Middle: if pchar(c)[Ndx+0]=ch then goto Found0; if pchar(c)[Ndx+1]=ch then goto Found1; if pchar(c)[Ndx+2]=ch then goto Found2; if pchar(c)[Ndx+3]=ch then goto Found3; inc(Ndx,4); if Ndx<=Len then goto Middle; Ndx:=Len+1; if pchar(c)[Len+1]=ch then goto Found0; if pchar(c)[Len+2]=ch then goto Found1; if pchar(c)[Len+3]<>ch then goto NotFound; Result:=integer(@pchar(Ndx)[-1]); exit; goto Return; //drop Ndx Small: if Len=0 then goto NotFound; if pchar(c)[Ndx+0]=ch then goto Found0; if Len=1 then goto NotFound; if pchar(c)[Ndx+1]=ch then goto Found1; if Len=2 then goto NotFound; if pchar(c)[Ndx+2]<>ch then goto NotFound; Found2: Result:=integer(@pchar(Ndx)[-1]); exit; Found1: Result:=integer(@pchar(Ndx)[-2]); exit; Found0: Result:=integer(@pchar(Ndx)[-3]); exit; NotFound: Result:=0; exit; goto NotFound; //kill warning 'Ndx might not have been initialized' Found3: Result:=integer(@pchar(Ndx)[0]); exit; goto Return; //drop Ndx Large: Save:=c; Mask:=ord(ch); Ndx:=integer(@pchar(c)[+4]); d:=Mask; inc(Len,c); SaveEnd:=Len; Mask:=(Mask shl 8); inc(Len,+4-16+3); Mask:=Mask or d; Len:=Len and (-4); d:=Mask; cardinal(Sign):=cSignums; Mask:=Mask shl 16; c:=pintegerArray(Ndx)[0]; Mask:=Mask or d; inc(Ndx,4); c:=c xor Mask; d:=integer(@pchar(c)[cMinusOnes]); c:=c xor (-1); c:=c and d; d:=Mask; if c and Sign<>0 then goto MatchedMinus1; Ndx:=Ndx and (-4); d:=d xor pintegerArray(Ndx)[0]; if cardinal(Ndx)<cardinal(Len) then repeat; c:=integer(@pchar(d)[cMinusOnes]); d:=d xor (-1); c:=c and d; d:=Mask; d:=d xor pintegerArray(Ndx)[1]; if c and Sign<>0 then goto Matched; c:=integer(@pchar(d)[cMinusOnes]); d:=d xor (-1); c:=c and d; d:=pintegerArray(Ndx)[2]; if c and Sign<>0 then goto MatchedPlus1; d:=d xor Mask; c:=integer(@pchar(d)[cMinusOnes]); d:=d xor (-1); inc(Ndx,12); c:=c and d; //if c and Sign<>0 then goto MatchedMinus1; d:=Mask; if c and Sign<>0 then goto MatchedMinus1; d:=d xor pintegerArray(Ndx)[0]; until cardinal(Ndx)>=cardinal(Len); Len:=SaveEnd; while true do begin; c:=integer(@pchar(d)[cMinusOnes]); d:=d xor (-1); c:=c and d; inc(Ndx,4); if c and Sign<>0 then goto MatchedMinus1; d:=Mask; if cardinal(Ndx)<=cardinal(Len) then d:=d xor pintegerArray(Ndx)[0] else begin; if Len=0 then goto NotMatched; d:=d xor pintegerArray(Len)[0]; Ndx:=Len; Len:=0; end end; NotMatched: Result:=0; exit; MatchedPlus1: inc(Ndx,8); MatchedMinus1: dec(Ndx,4); Matched: c:=c and Sign; dec(Ndx,integer(Save)+2); if word(c)=0 then begin; c:=c shr 16; inc(Ndx,2); end; if byte(c)<>0 then dec(Ndx); Result:=Ndx; Return: end; end. --- NEW FILE: FastcodeGCDUnit.pas --- unit FastcodeGCDUnit; (* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Fastcode * * The Initial Developer of the Original Code is Fastcode * * Portions created by the Initial Developer are Copyright (C) 2002-2005 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Charalabos Michael <chm...@cr...> * John O'Harrow <jo...@el...> * Lars Blok Gravengaard * * BV Version: 1.42 * ***** END LICENSE BLOCK ***** *) interface {$I Fastcode.inc} type FastcodeGCDFunction = function( A, B: Cardinal ): Cardinal; {Functions shared between Targets} function GCD_JOH_IA32_6( A, B: Cardinal ): Cardinal; function GCD_JOH_IA32ext_4( A, B: Cardinal ): Cardinal; {Functions not shared between Targets} function GCD_JOH_IA32_8( A, B: Cardinal ): Cardinal; function GCD_LBG_Pas_1( A, B: Cardinal ): Cardinal; function GCD_JOH_Pas_5( A, B: Cardinal ): Cardinal; {Functions} const FastcodeGCDP4R: FastcodeGCDFunction = GCD_JOH_IA32_6; FastcodeGCDP4N: FastcodeGCDFunction = GCD_JOH_IA32_8; FastcodeGCDPMY: FastcodeGCDFunction = GCD_JOH_IA32ext_4; FastcodeGCDPMD: FastcodeGCDFunction = GCD_JOH_IA32ext_4; FastcodeGCDAMD64: FastcodeGCDFunction = GCD_JOH_IA32ext_4; FastcodeGCDAMD64_SSE3: FastcodeGCDFunction = GCD_JOH_IA32ext_4; FastcodeGCDIA32SizePenalty: FastcodeGCDFunction = GCD_JOH_IA32_6; FastcodeGCDIA32: FastcodeGCDFunction = GCD_JOH_IA32_6; FastcodeGCDMMX: FastcodeGCDFunction = GCD_JOH_IA32_6; FastcodeGCDSSESizePenalty: FastcodeGCDFunction = GCD_JOH_IA32_6; FastcodeGCDSSE: FastcodeGCDFunction = GCD_JOH_IA32_6; FastcodeGCDSSE2: FastcodeGCDFunction = GCD_JOH_IA32_6; FastcodeGCDPascalSizePenalty: FastcodeGCDFunction = GCD_LBG_Pas_1; FastcodeGCDPascal: FastcodeGCDFunction = GCD_JOH_Pas_5; implementation function GCD_JOH_IA32_6( A, B: Cardinal ): Cardinal; asm {56 Bytes} push ebx bsf ecx, edx jz @@Done bsf ebx, eax jz @@Done2 shr edx, cl cmp ebx, ecx ja @@Setup mov ecx, ebx @@Setup: push ecx mov ecx, ebx @@Loop: shr eax, cl mov ecx, eax cmp eax, edx ja @@1 je @@Exit mov eax, edx sub eax, ecx mov edx, ecx jmp @@2 @@1: sub eax, edx @@2: bsf ecx, eax jmp @@Loop @@Exit: pop ecx pop ebx shl eax, cl ret @@Done2: mov eax, edx @@Done: pop ebx end; function GCD_JOH_IA32_8( A, B: Cardinal ): Cardinal; asm {56 Bytes} push ebx bsf ecx, edx jz @@Done1 {B = 0} bsf ebx, eax jz @@Done2 {A = 0} shr edx, cl cmp ebx, ecx ja @@SaveShift mov ecx, ebx @@SaveShift: push ecx {Common Shift} mov ecx, ebx @@Loop: shr eax, cl sub eax, edx je @@Exit mov ebx, eax sbb ecx, ecx and ebx, ecx sub eax, ebx add edx, ebx sub eax, ebx bsf ecx, eax jmp @@Loop @@Exit: mov eax, edx pop ecx pop ebx shl eax, cl ret @@Done2: mov eax, edx @@Done1: pop ebx end; function GCD_JOH_IA32ext_4( A, B: Cardinal ): Cardinal; asm {56 Bytes} bsf ecx, edx jz @@Done1 {B = 0} push ebx push edi bsf ebx, eax jz @@Done2 {A = 0} shr edx, cl mov edi, ecx cmp ebx, ecx mov ecx, ebx cmovb edi, ebx {Common Shift} @@Loop: shr eax, cl cmp eax, edx mov ecx, eax je @@Exit cmovb eax, edx cmovb edx, ecx sub eax, edx bsf ecx, eax jmp @@Loop @@Exit: mov ecx, edi shl eax, cl pop edi pop ebx ret @@Done2: mov eax, edx pop edi pop ebx @@Done1: end; function GCD_LBG_Pas_1( A, B: Cardinal ): Cardinal; var temp: Cardinal; begin while B <> 0 do begin Temp := B; B := A mod Temp; A := Temp; end; Result := A; end; function GCD_JOH_Pas_5( A, B: Cardinal ): Cardinal; begin {120 Bytes} if (B <= 1) then begin if B = 0 then Result := A else Result := B end {B <= 1} else if (A <= 1) then begin if A = 0 then Result := B else Result := A end {A <= 1} else begin Result := 1; while (not Odd(A)) and (not Odd(B)) do begin A := A shr 1; B := B shr 1; Result := Result + Result; end; while not Odd(A) do A := A shr 1; while not Odd(B) do B := B shr 1; repeat if A < B then begin B := (B-A) shr 1; while not Odd(B) do B := B shr 1; end else if A > B then begin A := (A-B) shr 1; while not Odd(A) do A := A shr 1; end else begin Result := Result * B; Exit; end until False; end; end; end. --- NEW FILE: FastcodePosIExUnit.pas --- unit FastcodePosIExUnit; (* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Fastcode * * The Initial Developer of the Original Code is Fastcode * * Portions created by the Initial Developer are Copyright (C) 2002-2005 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Charalabos Michael <chm...@cr...> * John O'Harrow <jo...@el...> * Dennis Kjaer Christensen <mar...@ho...> * * BV Version: 1.31 * ***** END LICENSE BLOCK ***** *) interface {$I Fastcode.inc} type FastcodePosIExFunction = function(const SubStr, S: string; Offset: Integer = 1): Integer; {Functions shared between Targets} function PosIEx_JOH_IA32_1(const SubStr, S: string; Offset: Integer = 1): Integer; function PosIEx_DKC_Pas_24(const SubStr, S: string; Offset: Integer = 1): Integer; {Functions not shared between Targets} {Functions} const FastcodePosIExP4R: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExP4N: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExPMY: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExPMD: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExAMD64: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExAMD64_SSE3: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExIA32SizePenalty: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExIA32: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExMMX: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExSSESizePenalty: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExSSE: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExSSE2: FastcodePosIExFunction = PosIEx_JOH_IA32_1; FastcodePosIExPascalSizePenalty: FastcodePosIExFunction = PosIEx_DKC_Pas_24; FastcodePosIExPascal: FastcodePosIExFunction = PosIEx_DKC_Pas_24; implementation uses SysUtils; var LookUpTable: array of Char; function PosIEx_JOH_IA32_1(const SubStr, S: string; Offset: Integer = 1): Integer; const LocalsSize = 32; _ebx = 0; _edi = 4; _esi = 8; _ebp = 12; _edx = 16; _ecx = 20; _end = 24; _tmp = 28; asm sub esp, LocalsSize {Setup Local Storage} mov [esp._ebx], ebx cmp eax, 1 sbb ebx, ebx {-1 if SubStr = '' else 0} sub edx, 1 {-1 if S = ''} sbb ebx, 0 {Negative if S = '' or SubStr = '' else 0} sub ecx, 1 {Offset - 1} or ebx, ecx {Negative if S = '' or SubStr = '' or Offset < 1} jl @@InvalidInput mov [esp._edi], edi mov [esp._esi], esi mov [esp._ebp], ebp mov [esp._edx], edx mov edi, [eax-4] {Length(SubStr)} mov esi, [edx-3] {Length(S)} add ecx, edi cmp ecx, esi jg @@NotFound {Offset to High for a Match} test edi, edi jz @@NotFound {Length(SubStr = 0)} add esi, edx {Last Character Position in S} add eax, edi {Last Character Position in SubStr + 1} mov [esp._end], eax {Save SubStr End Positiom} add edx, ecx {Search Start Position in S for Last Character} movzx eax, [eax-1] {Last Character of SubStr} mov bl, al {Convert Character into Uppercase} add bl, $9f sub bl, $1a jnb @@UC1 sub al, $20 @@UC1: mov ah, al neg edi {-Length(SubStr)} mov ecx, eax shl eax, 16 or ecx, eax {All 4 Bytes = Uppercase Last Character of SubStr} @@MainLoop: add edx, 4 cmp edx, esi ja @@Remainder {1 to 4 Positions Remaining} mov eax, [edx-4] {Check Next 4 Bytes of S} mov ebx, eax {Convert All 4 Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ebx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ebx xor eax, ecx {Zero Byte at each Matching Position} lea ebx, [eax-$01010101] not eax and eax, ebx and eax, $80808080 {Set Byte to $80 at each Match Position else $00} jz @@MainLoop {Loop Until any Match on Last Character Found} bsf eax, eax {Find First Match Bit} shr eax, 3 {Byte Offset of First Match (0..3)} lea edx, [eax+edx-3] {Address of First Match on Last Character + 1} @@Compare: cmp edi, -4 jle @@Large cmp edi, -1 je @@SetResult {Exit with Match if Lenght(SubStr) = 1} mov eax, [esp._end] {SubStr End Position} movzx eax, word ptr [edi+eax] {Last Char Matches - Compare First 2 Chars} cmp ax, [edi+edx] je @@SetResult {Same - Skip Uppercase Conversion} mov ebx, eax {Convert Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ebx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ebx mov [esp._tmp], eax {Save Converted Characters} movzx eax, word ptr [edi+edx] mov ebx, eax {Convert Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ebx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ebx cmp eax, [esp._tmp] jne @@MainLoop {No Match on First 2 Characters} @@SetResult: {Full Match} lea eax, [edx+edi] {Calculate and Return Result} sub eax, [esp._edx] {Subtract Start Position} jmp @@Done @@NotFound: xor eax, eax {No Match Found - Return 0} @@Done: mov ebx, [esp._ebx] mov edi, [esp._edi] mov esi, [esp._esi] mov ebp, [esp._ebp] add esp, LocalsSize {Release Local Storage} ret @@Large: mov eax, [esp._end] {SubStr End Position} mov eax, [eax-4] {Compare Last 4 Characters of S and SubStr} cmp eax, [edx-4] je @@LargeCompare {Same - Skip Uppercase Conversion} mov ebx, eax {Convert All 4 Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ebx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ebx mov [esp._tmp], eax {Save Converted Characters} mov eax, [edx-4] mov ebx, eax {Convert All 4 Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ebx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ebx cmp eax, [esp._tmp] {Compare Converted Characters} jne @@MainLoop {No Match on Last 4 Characters} @@LargeCompare: mov ebx, edi {Offset} mov [esp._ecx], ecx {Save ECX} @@CompareLoop: {Compare Remaining Characters} add ebx, 4 {Compare 4 Characters per Loop} jge @@SetResult {All Characters Matched} mov eax, [esp._end] {SubStr End Positiob} mov eax, [ebx+eax-4] cmp eax, [ebx+edx-4] je @@CompareLoop {Same - Skip Uppercase Conversion} mov ecx, eax {Convert All 4 Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ecx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ecx mov [esp._tmp], eax mov eax, [ebx+edx-4] mov ecx, eax {Convert All 4 Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ecx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ecx cmp eax, [esp._tmp] je @@CompareLoop {Match on Next 4 Characters} mov ecx, [esp._ecx] {Restore ECX for Next Main Loop} jmp @@MainLoop {No Match} @@Remainder: {Check Last 1 to 4 Characters} mov eax, [esi-3] {Last 4 Characters of S - May include Length Bytes} mov ebx, eax {Convert All 4 Characters into Uppercase} or eax, $80808080 mov ebp, eax sub eax, $7B7B7B7B xor ebp, ebx or eax, $80808080 sub eax, $66666666 and eax, ebp shr eax, 2 xor eax, ebx xor eax, ecx {Zero Byte at each Matching Position} lea ebx, [eax-$01010101] not eax and eax, ebx and eax, $80808080 {Set Byte to $80 at each Match Position else $00} jz @@NotFound {No Match Possible} sub edx, 3 {Start Position for Next Loop} movzx eax, [edx-1] mov bl, al {Convert Character into Uppercase} add bl, $9f sub bl, $1a jnb @@UC2 sub al, $20 @@UC2: cmp al, cl je @@Compare {Match} cmp edx, esi ja @@NotFound add edx, 1 movzx eax, [edx-1] mov bl, al {Convert Character in AL into Uppercase} add bl, $9f sub bl, $1a jnb @@UC3 sub al, $20 @@UC3: cmp al, cl je @@Compare {Match} cmp edx, esi ja @@NotFound add edx, 1 movzx eax, [edx-1] mov bl, al {Convert Character in AL into Uppercase} add bl, $9f sub bl, $1a jnb @@UC4 sub al, $20 @@UC4: cmp al, cl je @@Compare {Match} cmp edx, esi ja @@NotFound add edx, 1 jmp @@Compare {Match} @@InvalidInput: xor eax, eax {Return 0} mov ebx, [esp._ebx] add esp, LocalsSize {Release Local Storage} end; {PosIEx} function PosIEx_DKC_Pas_24(const SubStr, S: string; Offset: Integer = 1): Integer; var I2, SubStrLength, StrLength : Integer; SubStrFirstCharUpper : Char; begin Result := 0; if (Offset <= 0) then Exit; if S <> '' then StrLength := PInteger(Integer(S)-4)^ else Exit; if SubStr <> '' then SubStrLength := PInteger(Integer(SubStr)-4)^ else Exit; if (SubStrLength <= 0) then Exit; if (StrLength <= 0) then Exit; if (Integer(Offset) > StrLength) then Exit; if (StrLength - Integer(Offset) + 1 < SubStrLength) then //No room for match Exit; Result := Offset; SubStrFirstCharUpper := LookUpTable[Ord(SubStr[1])]; repeat if SubStrFirstCharUpper = LookUpTable[Ord(S[Result])] then begin if Result + SubStrLength - 1 > StrLength then begin Result := 0; Exit; end; I2 := 1; repeat if (I2 >= SubStrLength) then Exit; if S[Result+I2] <> SubStr[I2+1] then if LookUpTable[Ord(S[Result+I2])] <> LookUpTable[Ord(SubStr[I2+1])] then Break; Inc(I2); until(False); end; Inc(Result); until(Result > StrLength); Result := 0; end; procedure InitializeLookUpTable; var I : Byte; S1, S2 : AnsiString; begin SetLength(LookUpTable, 256); for I := 0 to 255 do begin S1 := Char(I); S2 := UpperCase(S1); LookUpTable[I] := S2[1]; end; end; initialization InitializeLookUpTable; end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:35:25
|
Update of /cvsroot/gmarathon/gmarathon/src/fastcode/061/Sample In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18568/061/Sample Added Files: Project1.dpr Unit1.dfm Unit1.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: Project1.dpr --- program Project1; uses FastCode in '..\FastCode.pas', Forms, Unit1 in 'Unit1.pas' {Form1}, AnsiStringReplaceJOHIA32Unit12 in '..\AnsiStringReplaceJOHIA32Unit12.pas', AnsiStringReplaceJOHIA32Unit13 in '..\AnsiStringReplaceJOHIA32Unit13.pas', AnsiStringReplaceJOHPASUnit12 in '..\AnsiStringReplaceJOHPASUnit12.pas', FastCodeStrToInt32Unit in '..\FastCodeStrToInt32Unit.pas', FastCodeStrCopyUnit in '..\FastCodeStrCopyUnit.pas', FastcodeUpperCaseUnit in '..\FastcodeUpperCaseUnit.pas', FastCodeCompareTextUnit in '..\FastCodeCompareTextUnit.pas', FastcodeCPUID in '..\FastcodeCPUID.pas', FastcodeLowerCaseUnit in '..\FastcodeLowerCaseUnit.pas', FastCodePatch in '..\FastCodePatch.pas', FastCodePosUnit in '..\FastCodePosUnit.pas', FastCodeStrCompUnit in '..\FastCodeStrCompUnit.pas', FastCodeFillCharUnit in '..\FastCodeFillCharUnit.pas', FastCodeCompareStrUnit in '..\FastCodeCompareStrUnit.pas', FastCodeCompareMemUnit in '..\FastCodeCompareMemUnit.pas', FastCodePosExUnit in '..\FastCodePosExUnit.pas', FastCodeStrLenUnit in '..\FastCodeStrLenUnit.pas', FastCodeAnsiStringReplaceUnit in '..\FastCodeAnsiStringReplaceUnit.pas', FastcodeStrICompUnit in '..\FastcodeStrICompUnit.pas', FastCodeCharPos in '..\Non.RTL\FastCodeCharPos.pas', FastcodeGCDUnit in '..\Non.RTL\FastcodeGCDUnit.pas', FastcodeMaxIntUnit in '..\Non.RTL\FastcodeMaxIntUnit.pas', FastcodePosIEXUnit in '..\Non.RTL\FastcodePosIEXUnit.pas'; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. --- NEW FILE: Unit1.pas --- unit Unit1; interface uses Forms, Windows, ExtCtrls, Classes, Controls, Grids; type TForm1 = class(TForm) StringGrid: TStringGrid; Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure StringGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses SysUtils, StrUtils, Graphics, FastCode; procedure TForm1.FormCreate(Sender: TObject); const SrcArray : array[0..12] of Char = ('1','2','3','4','5','6','7','8','9','0','A','B',#0); var i: Integer; Dest, Src: PChar; DestArray: array[0..12] of Char; begin Caption := Caption + FastCodeRTLVersion; with StringGrid do begin Cells[1, 0] := 'Delphi Result'; Cells[2, 0] := 'FastCode Result'; Cells[3, 0] := 'Correct'; Cells[0, 0] := 'Routine'; Cells[0, 1] := 'Pos'; Cells[0, 2] := 'PosEx'; Cells[0, 3] := 'LowerCase'; Cells[0, 4] := 'UpperCase'; Cells[0, 5] := 'CompareText'; Cells[0, 6] := 'StrComp'; Cells[0, 7] := 'StrCopy'; Cells[0, 8] := 'StrLen'; Cells[0, 9] := 'AnsiStringReplace'; Cells[0, 10] := 'StrToInt32'; Cells[0, 11] := 'StrIComp'; // Pos Cells[1, 1] := '3'; Cells[2, 1] := IntToStr(Pos('l', 'Hello world')); // PosEx Cells[1, 2] := '2'; Cells[2, 2] := IntToStr(PosEx('el', 'Hello')); // LowerCase Cells[1, 3] := 'test'; Cells[2, 3] := LowerCase('TEST'); // UpperCase Cells[1, 4] := 'TEST'; Cells[2, 4] := UpperCase('test'); // CompareText Cells[1, 5] := '0'; Cells[2, 5] := IntToStr(CompareText('HeLLo', 'Hello')); // StrComp Cells[1, 6] := '0'; Cells[2, 6] := IntToStr(StrComp('Hello', 'Hello')); // StrCopy Dest := @DestArray[0]; Src := @SrcArray[0]; StrCopy(Dest, Src); Cells[1, 7] := '1234567890AB'; Cells[2, 7] := Dest; // StrLen Cells[1, 8] := '5'; Cells[2, 8] := IntToStr(StrLen('Hello')); // StringReplace Cells[1, 9] := 'Haaao'; Cells[2, 9] := StringReplace('Hello', 'eLl', 'aaa', [rfReplaceAll, rfIgnoreCase]); // StrToInt32 Cells[1, 10] := '1234567890'; Cells[2, 10] := IntToStr(StrToInt('1234567890')); // StrIComp; Cells[1, 11] := '7'; Cells[2, 11] := IntToStr(StrIComp('Hello', 'aBcDHELLOefg')); for i := 1 to RowCount - 1 do Cells[3, i] := BoolToStr(Cells[2, i] = Cells[1, i], True); end; end; procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with TStringGrid(Sender) do begin if ARow = 0 then begin Canvas.Brush.Color := clGray; Canvas.Font.Color := clWhite; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left + 4, Rect.Top +4, Cells[ACol, ARow]); end else if Cells[3, ARow] = 'True' then begin Canvas.Brush.Color := $00F2EFEA; Canvas.Font.Color := clBlack; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left + 4, Rect.Top +4, Cells[ACol, ARow]); end else begin Canvas.Brush.Color := clRed; Canvas.Font.Color := clWhite; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left + 4, Rect.Top +4, Cells[ACol, ARow]); end; end; end; end. --- NEW FILE: Unit1.dfm --- object Form1: TForm1 Left = 192 Top = 58 BorderStyle = bsDialog Caption = 'FastCode RTL Replacement Test - ' ClientHeight = 324 ClientWidth = 438 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False Position = poScreenCenter OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object StringGrid: TStringGrid Left = 0 Top = 0 Width = 438 Height = 303 TabStop = False Align = alClient BevelInner = bvNone BevelOuter = bvNone ColCount = 3 DefaultColWidth = 144 FixedColor = 15921130 FixedCols = 0 RowCount = 12 FixedRows = 0 Font.Charset = GREEK_CHARSET Font.Color = clWindowText Font.Height = -15 Font.Name = 'Tahoma' Font.Style = [fsBold] Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSelect] ParentFont = False TabOrder = 0 OnDrawCell = StringGridDrawCell end object Panel1: TPanel Left = 0 Top = 303 Width = 438 Height = 21 Align = alBottom BevelOuter = bvLowered Caption = 'If you see red then the routine failed to give the correct resul' + 't!' TabOrder = 1 end end |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:35:06
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/German/by Uwe Queisser In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18433/by Uwe Queisser Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- (This appears to be a binary file; contents omitted.) |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:35:01
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/German/by Thomas Speck In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18433/by Thomas Speck Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages German Translation by Thomas Speck (tho...@ts...). } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Unbekannt'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'Der aktuelle Aufrufstack, der zu diesem Fehler geführt hat (Rücksprungadressen): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Aktueller Speicherauszug von 256 Bytes, beginnend ab Zeigeradresse '; {Block Error Messages} BlockScanLogHeader = 'Allocated block logged by LogAllocatedBlocksToFile. The size is: '; ErrorMsgHeader = 'FastMM hat einen Fehler entdeckt während einem / einer'; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'Freien Block-Scan'; OperationMsg = ' Operation. '; BlockHeaderCorruptedMsg = 'Der Block-Beginn ist defekt. '; BlockFooterCorruptedMsg = 'Das Block-Ende ist defekt. '; FreeModifiedErrorMsg = 'FastMM entdeckte einen Block, der nach der Freigabe verändert wurde. '; DoubleFreeErrorMsg = 'Es wurde versucht, einen unbelegten Block freizugeben bzw. zu belegen.'; PreviousBlockSizeMsg = #13#10#13#10'Die vorherige Blockgröße war: '; CurrentBlockSizeMsg = #13#10#13#10'Die Blockgröße ist: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Aufrufstack, von wem der Block vorher belegt wurde (Rücksprungadressen):'; StackTraceAtAllocMsg = #13#10#13#10'Aufrufstack, von wem der Block momentan belegt wird (Rücksprungadressen):'; PreviousObjectClassMsg = #13#10#13#10'Der Block wurde vorher für eine Objektklasse benutzt: '; CurrentObjectClassMsg = #13#10#13#10'Der Block wird momentan für eine Objektklasse benutzt '; PreviousAllocationGroupMsg = #13#10#13#10'The allocation group was: '; PreviousAllocationNumberMsg = #13#10#13#10'The allocation number was: '; CurrentAllocationGroupMsg = #13#10#13#10'The allocation group is: '; CurrentAllocationNumberMsg = #13#10#13#10'The allocation number is: '; StackTraceAtFreeMsg = #13#10#13#10'Aufrufstack, von wem der Block vorher freigegeben wurde (Rücksprungadressen):'; BlockErrorMsgTitle = 'Speicherfehler entdeckt'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM hat einen Versuch entdeckt, eine virtuelle Methode eines freigegebenen Objektes aufzurufen. Eine Schutzverletzung wird nun aufgerufen, um die aktuelle Operation abzubrechen.'; InterfaceErrorHeader = 'FastMM hat einen Versuch entdeckt, ein Interface eines freigegebenen Objektes aufzurufen. Eine Schutzverletzung wird nun aufgerufen, um die aktuelle Operation abzubrechen.'; BlockHeaderCorruptedNoHistoryMsg = ' Unglücklicherweise wurde der Block-Beginn beschädigt, so daß keine Historie verfügbar ist.'; FreedObjectClassMsg = #13#10#13#10'Freigegebene Objekt-Klasse: '; VirtualMethodName = #13#10#13#10'Virtuelle Methode: '; VirtualMethodOffset = 'Offset +'; VirtualMethodAddress = #13#10#13#10'Adresse der virtuellen Methode: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Aufrufstack, wann das Objekt belegt wurde (Rücksprungadressen):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Aufrufstack, wann das Objekt freigegeben wurde (Rücksprungadressen):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 ist installiert.'; AlreadyInstalledTitle = 'Schon installiert.'; OtherMMInstalledMsg = 'FastMM4 kann nicht installiert werden, weil ein schon ein anderer ' + 'Memory Manager installiert wurde.'#13#10'Wenn Sie FastMM4 benutzen wollen, ' + 'dann vergewissern Sie sich, daß FastMM4.pas die allererste Unit in der "uses"' + #13#10'Sektion Ihrer Projektdatei ist.'; OtherMMInstalledTitle = 'Kann FastMM4 nicht installieren - Ein anderer Memory Manager ist schon installiert.'; MemoryAllocatedMsg = 'FastMM4 kann nicht installiert werden, weil schon Speicher' + 'durch den Default Memory Manager belegt wurde.'#13#10'FastMM4.pas MUSS ' + 'die allererste Unit in Ihrer Projektdatei sein, sonst wird der Speicher ' + 'durch den Default Memory Manager belegt, bevor FastMM4 die Kontrolle übernimmt. ' + #13#10#13#10'Wenn Sie ein Programm benutzen, welches Exceptions abfängt ' + 'z.B. MadExcept (oder ein anderes Tool, das die Reihenfolge der Unit Initialisierung ' + 'verändert),'#13#10'dann gehen Sie in seine Konfiguration und stellen Sie sicher, daß ' + 'FastMM4.pas Unit vor jeder anderen Unit initialisiert wird.'; MemoryAllocatedTitle = 'Kann FastMM4nicht installieren - Speicher wurde schon belegt.'; {Leak checking messages} LeakLogHeader = 'Ein Speicherblock hat Speicher verloren. Die Größe ist: '; LeakMessageHeader = 'Diese Anwendung hat Speicher verloren. '; SmallLeakDetail = 'Die Größen von kleinen Speicherblöcken, die verlorengegangen sind, betragen' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (ausgenommen erwartete Speicherlecks, die durch Zeiger registriert wurden)' {$endif} + ':'#13#10; LargeLeakDetail = 'Die Größen von mittleren und großen Speicherblöcken, die verlorengegangen sind, betragen' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (ausgenommen erwartete Speicherlecks, die durch Zeiger registriert wurden)' {$endif} + ': '; BytesMessage = ' Bytes: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Notiz: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Diese Überprüfung auf Speicherlecks wird nur durchgeführt, wenn Delphi auf dem selben Computer gestartet ist. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Speicherleck-Details werden in eine Textdatei geschrieben, die sich im selben Verzeichnis wie diese Anwendung befindet. ' {$else} + 'Aktiviere "LogMemoryLeakDetailToFile", um eine detaillierte Log-Datei zu erhalten, die Details zu Speicherlecks enthält. ' {$endif} {$else} + 'Um eine Log-Datei zu erhalten, die Details zu Speicherlecks enthält, aktivieren Sie "FullDebugMode" und "LogMemoryLeakDetailToFile" in der Options-Datei. ' {$endif} + 'Um diese Speicherleck-Überprüfung abzuschalten, kommentieren Sie "EnableMemoryLeakReporting" aus.'#13#10 {$endif} + #0; LeakMessageTitle = 'Speicherleck entdeckt'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM wurde installiert.'; FastMMInstallSharedMsg = 'Benutzung einer existierenden Instanz von FastMM wurde gestartet.'; FastMMUninstallMsg = 'FastMM wurde deinstalliert.'; FastMMUninstallSharedMsg = 'Benutzung einer existierenden Instanz von FastMM wurde gestoppt.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'MM Operation nach der Deinstallierung.'; InvalidGetMemMsg = 'FastMM hat einen GetMem-Aufruf nach der Deinstallation von FastMM entdeckt.'; InvalidFreeMemMsg = 'FastMM hat einen FreeMem-Aufruf nach der Deinstallation von FastMM entdeckt.'; InvalidReallocMemMsg = 'FastMM hat einen ReAllocMem-Aufruf nach der Deinstallation von FastMM entdeckt.'; InvalidAllocMemMsg = 'FastMM hat einen AllocMem-Aufruf nach der Deinstallation von FastMM entdeckt.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:50
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Ukrainian In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Ukrainian Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages 2006-07-18 Ukrainian translation by Andrey V. Shtukaturov. } unit FastMM4MessagesUKR; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Unknown'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'Ïîòî÷íå òðàñóâàííÿ ñòåêó âêàçóº íà öþ ïîìèëêó (âõîäæåííÿ): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Ïîòî÷íèé äàìï ïàìÿò³ ç 256 áàéò ïî÷èíàþ÷è ç àäðåñè '; {Block Error Messages} BlockScanLogHeader = ' Âèä³ëåíèé áëîê çàïðîòîêîëüîâàíî ïðîöåäóðîþ LogAllocatedBlocksToFile. Ðîçì³ð: '; ErrorMsgHeader = 'FastMM âèÿâèâ ïîìèëêó ï³ä ÷àñ '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'ñêàíóâàííÿ çâ³ëüíåíîãî áëîêó '; OperationMsg = ' îïåðàö³ÿ. '; BlockHeaderCorruptedMsg = ' Çàãîëîâîê áëîêó óøêîäæåíèé. '; BlockFooterCorruptedMsg = ' Íèæíÿ ÷àñòèíà áëîêó óøêîäæåíà. '; FreeModifiedErrorMsg = 'FastMM âèÿâèâ ùî áëîê áóëî ìîäèô³êîâàíî ï³ñëÿ éîãî çâ³ëüíåííÿ. '; DoubleFreeErrorMsg = ' Áóëà ñïðîáà çâ³ëüíèòè/ïåðåâèä³ëèòè íå âèä³ëåíèé áëîê.'; PreviousBlockSizeMsg = #13#10#13#10'Ðîçì³ð ïîïåðåäíüîãî áëîêó áóâ: '; CurrentBlockSizeMsg = #13#10#13#10'Ðîçì³ð áëîêó: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Òðàñóâàííÿ ñòåêó ÿêùî öåé áëîê áóâ ðàí³øå âèä³ëåíèé (âõîäæåííÿ):'; StackTraceAtAllocMsg = #13#10#13#10'Òðàñóâàííÿ ñòåêó ï³ä ÷àñ âèä³ëåííÿ áëîêó (âõîäæåííÿ):'; PreviousObjectClassMsg = #13#10#13#10'Áëîê áóâ ðàí³øå âèêîðèñòàíèé äëÿ îáºêòà êëàñó: '; CurrentObjectClassMsg = #13#10#13#10'Áëîê íà äàíèé ìîìåíò âèêîðèñòîâóºòüñÿ äëÿ îáºêòà êëàñó: '; PreviousAllocationGroupMsg = #13#10#13#10'Âèä³ëåíà ãðóïà áóëà: '; PreviousAllocationNumberMsg = #13#10#13#10'Âèä³ëåíèé íîìåð áóâ: '; CurrentAllocationGroupMsg = #13#10#13#10'Âèä³ëåíà ãðóïà ñòàëà: '; CurrentAllocationNumberMsg = #13#10#13#10'Âèä³ëåíèé íîìåð ñòàâ: '; StackTraceAtFreeMsg = #13#10#13#10'Òðàñóâàííÿ ñòåêó êîëè öåé áëîê áóâ ðàí³øå çâ³ëüíåíèé (âõîäæåííÿ):'; BlockErrorMsgTitle = 'Âèÿâëåíî ïîìèëêó ïàìÿò³.'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM âèÿâèâ ñïðîáó âèêëèêàòè â³ðòóàëüíèé ìåòîä çâ³ëüíåíîãî îáºêòó. Çàðàç áóäå âèêëèêàíå ïîðóøåííÿ äîñòóïó äëÿ ïåðåðèâàííÿ ïîòî÷íî¿ îïåðàö³¿.'; InterfaceErrorHeader = 'FastMM âèÿâèâ ñïðîáó âèêîðèñòàòè ³íòåðôåéñ çâ³ëüíåíîãî îáºêòó. Çàðàç áóäå âèêëèêàíå ïîðóøåííÿ äîñòóïó äëÿ ïåðåðèâàííÿ ïîòî÷íî¿ îïåðàö³¿.'; BlockHeaderCorruptedNoHistoryMsg = ' Íà æàëü çàãîëîâîê áëîêó óøêîäæåíèé ³ ³ñòîð³ÿ íåäîñòóïíà.'; FreedObjectClassMsg = #13#10#13#10'Êëàñ çâ³ëüíåíîãî îáºêòó: '; VirtualMethodName = #13#10#13#10'³ðòóàëüíèé ìåòîä: '; VirtualMethodOffset = 'Çñóâ +'; VirtualMethodAddress = #13#10#13#10'Àäðåñà â³ðòóàëüíîãî ìåòîäó: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Òðàñóâàííÿ ñòåêó êîëè ïàìÿòü ï³ä îáºêò áóëà âèä³ëåíà (âõîäæåííÿ):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Òðàñóâàííÿ ñòåêó êîëè ïàìÿòü ï³ä îáºêò áóëà çãîäîì çâ³ëüíåíà (âõîäæåííÿ):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 âæå âñòàíîâëåíî.'; AlreadyInstalledTitle = 'Âæå âñòàíîâëåíî.'; OtherMMInstalledMsg = 'FastMM4 íå ìîæå áóòè âñòàíîâëåíî ÿêùî âæå âñòàíîâëåíî ³íøèé ìåíåäæåð ïàìÿò³.' + #13#10'ßêùî âè áàæàºòå âèêîðèñòîâóâàòè FastMM4, áóäü-ëàñêà ïåðåêîíàéòåñü ùî FastMM4.pas º ñàìèì ïåðøèì ìîäóëåì â' + #13#10'ñåêö³¿ "uses" âàøîãî .dpr ôàéëó ïðîåêòó.'; OtherMMInstalledTitle = 'Íåìîæëèâî âñòàíîâèòè FastMM4 - âæå âñòàíîâëåíî ³íøèé ìåíåäæåð ïàìÿò³.'; MemoryAllocatedMsg = 'FastMM4 íåìîæëèâî âñòàíîâèòè êîëè ïàìÿòü âæå áóëà ' + 'âèä³ëåíà ñòàíäàðòíèì ìåíåäæåðîì ïàìÿòè.'#13#10'FastMM4.pas ÏÎÂÈÍÅÍ ' + 'áóòè ïåðøèì ìîäóëåì ó âàøîìó ôàéë³ .dpr ôàéë³ ïðîåêòó, ³íàêøå ïàìÿòü ìîæå ' + 'áóòè âèä³ëåíà'#13#10'÷åðåç ñòàíäàðòíèé ìåíåäæåð ïàìÿò³ ïåðåä òèì ÿê FastMM4 ' + 'îòðèìຠêîíòðîëü. '#13#10#13#10'ßêùî âè âèêîðèñòîâóºòå îáðîáíèê îñîáëèâèõ ñèòóàö³é, ' + 'íàïðèêëàä MadExcept (àáî áóäü-ÿêèé ³íøèé ³íñòðóìåíò ùî ìîäèô³êóº ïîðÿäîê ³í³ö³àë³çàö³¿ ' + 'ìîäóëåé),'#13#10'òîä³ ïåðåéä³òü íà ñòîð³íêó éîãî êîíô³ãóðàö³¿ òà ïåðåêîíàéòåñÿ, ùî ' + 'FastMM4.pas ìîäóëü ³í³ö³àë³çóºòüñÿ ïåðåä áóäü-ÿêèì ³íøèì ìîäóëåì.'; MemoryAllocatedTitle = 'Íåìîæëèâî âñòàíîâèòè FastMM4 - Ïàìÿòü âæå áóëà âèä³ëåíà'; {Leak checking messages} LeakLogHeader = 'Áëîê ïàìÿò³ áóâ âèä³ëåíèé òà íå çâ³ëüíåíèé. Ðîçì³ð: '; LeakMessageHeader = ' öüîìó äîäàòêó â³äáóâàþòüñÿ âòðàòè ïàìÿò³.'; SmallLeakDetail = 'Âòðàòè áëîê³â ïàì''ÿò³ ìàëåíüêîãî ðîçì³ðó' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (çà âèíÿòêîì î÷³êóâàíèõ âòðàò ïàì''ÿò³ çàðåºñòðîâàíèõ ïî âêàç³âíèêó)' {$endif} + ':'#13#10; LargeLeakDetail = 'Ðîçì³ðè âòðàò áëîê³â ïàì''ÿò³ ñåðåäíüîãî ðîçì³ðó' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (çà âèíÿòêîì î÷³êóâàíèõ âòðàò ïàì''ÿò³ çàðåºñòðîâàíèõ ïî âêàç³âíèêó)' {$endif} + ': '; BytesMessage = ' áàéò: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Note: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Öÿ ïåðåâ³ðêà âòðàòè ïàìÿò³ âèêîíóºòüñÿ ëèøå ó âèïàäêó îäíî÷àñíî¿ ðîáîòè Delphi íà òîìó æ êîìïþòåð³. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Äåòàëüíà ³íôîðìàö³ÿ ïðî âòðàòó è ïàìÿò³ æóðíàëþºòüñÿ ó òåêñòîâèé ôàéë â òîìó æ êàòàëîç³, ùî é äîäàòîê. ' {$else} + 'Âêëþ÷³òü "LogMemoryLeakDetailToFile" äëÿ òîãî ùîá îòðèìàòè æóðíàë, ùî ì³ñòèòü äåòàëüíó ³íôîðìàö³þ ïðî âòðàòó ïàìÿò³. ' {$endif} {$else} + 'Äëÿ òîãî ùîá îòðèìàòè æóðíàë, ùî ì³ñòèòü äåòàëüíó ³íôîðìàö³þ ïðî âòðàòó ïàìÿò³, âêëþ÷³òü óìîâè êîìï³ëÿö³¿ "FullDebugMode" òà "LogMemoryLeakDetailToFile". ' {$endif} + 'Äëÿ òîãî ùîá âèêëþ÷èòè ö³ ïåðåâ³ðêè âòðàò ïàìÿò³, íåîáõ³äíî âèäàëèòè âèçíà÷åííÿ "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Âèÿâëåíî âòðàòó ïàìÿò³'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM has been installed.'; FastMMInstallSharedMsg = 'Sharing an existing instance of FastMM.'; FastMMUninstallMsg = 'FastMM has been uninstalled.'; FastMMUninstallSharedMsg = 'Stopped sharing an existing instance of FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'MM Operation after uninstall.'; InvalidGetMemMsg = 'FastMM has detected a GetMem call after FastMM was uninstalled.'; InvalidFreeMemMsg = 'FastMM has detected a FreeMem call after FastMM was uninstalled.'; InvalidReallocMemMsg = 'FastMM has detected a ReallocMem call after FastMM was uninstalled.'; InvalidAllocMemMsg = 'FastMM has detected a ReallocMem call after FastMM was uninstalled.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:46
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Spanish In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Spanish Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Spanish translation by JRG (The...@gm...). Change Log: 15 Feb 2006: Updated by Marcelo Montenegro. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_ManipuladorMemoria_Reporte.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Desconocida'; {Traza del stack Message} CurrentStackTraceMsg = #13#10#13#10'Traza del stack que concluyó en este error (direcciones de retorno): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Vaciado de memoria actual de 256 bytes en la dirección '; {Block Error Messages} BlockScanLogHeader = 'Allocated block logged by LogAllocatedBlocksToFile. The size is: '; ErrorMsgHeader = 'FastMM ha detectado un error durante una operación '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'de búsqueda de bloque libre'; OperationMsg = '. '; BlockHeaderCorruptedMsg = 'El encabezamiento de bloque ha sido corrompido. '; BlockFooterCorruptedMsg = 'La terminación de bloque ha sido corrompida. '; FreeModifiedErrorMsg = 'FastMM detectó que un bloque ha sido modificado luego de liberarse. '; DoubleFreeErrorMsg = 'Se realizó un intento de liberar/reasignar un bloque no reservado.'; PreviousBlockSizeMsg = #13#10#13#10'El tamaño anterior del bloque era: '; CurrentBlockSizeMsg = #13#10#13#10'El tamaño del bloque es: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Traza del stack de cuando este bloque fue previamente reservado (direcciones de retorno):'; StackTraceAtAllocMsg = #13#10#13#10'Traza del stack de cuando este bloque fue allocated (direcciones de retorno):'; PreviousObjectClassMsg = #13#10#13#10'El bloque estuvo anteriormente reservado para un objeto de clase: '; CurrentObjectClassMsg = #13#10#13#10'El bloque está reservado para un objeto de clase: '; PreviousAllocationGroupMsg = #13#10#13#10'The allocation group was: '; PreviousAllocationNumberMsg = #13#10#13#10'The allocation number was: '; CurrentAllocationGroupMsg = #13#10#13#10'The allocation group is: '; CurrentAllocationNumberMsg = #13#10#13#10'The allocation number is: '; StackTraceAtFreeMsg = #13#10#13#10'Traza del stack de cuando este bloque fue anteriormente liberado (direcciones de retorno):'; BlockErrorMsgTitle = 'Detectado Error de Memoria'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM ha detectado un intento de ejecutar un método virtual de un objeto liberado. Una violación de acceso se generará ahora para abortar la operación.'; InterfaceErrorHeader = 'FastMM ha detectado un intento de utlización de una interfaz de un objeto liberado. Una violación de acceso se generará ahora para abortar la operación.'; BlockHeaderCorruptedNoHistoryMsg = ' Desafortunadamente el encabezamiento de bloque ha sido corrompido así que no hay historia disponible.'; FreedObjectClassMsg = #13#10#13#10'Clase del objeto liberado: '; VirtualMethodName = #13#10#13#10'Método virtual: '; VirtualMethodOffset = 'Desplazamiento +'; VirtualMethodAddress = #13#10#13#10'Dirección del método virtual: '; StackTraceAtObjectAllocMsg = #13#10#13#10 + 'Traza del stack en el momento que el objeto fue creado (direcciones de retorno):'; StackTraceAtObjectFreeMsg = #13#10#13#10 + 'Traza del stack en el momento que el objeto fue liberado (direcciones de retorno):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 ya ha sido instalado.'; AlreadyInstalledTitle = 'Ya Instalado.'; OtherMMInstalledMsg = 'FastMM4 no puede instalarse ya que otro manipulador de memoria alternativo se ha instalado anteriormente.'#13#10 + 'Si desea utilizar FastMM4, por favor asegúrese de que FastMM4.pas es la primera unit en la sección "uses"'#13#10 + 'del .DPR de su proyecto.'; OtherMMInstalledTitle = 'FastMM4 no se puede instalar - Otro manipulador de memoria instalado'; MemoryAllocatedMsg = 'FastMM4 no puede instalarse ya que se ha reservado memoria mediante el manipulador de memoria estándar.'#13#10 + 'FastMM4.pas TIENE que ser la primera unit en el fichero .DPR de su proyecto, de otra manera podría reservarse memoria'#13#10 + 'mediante el manipulador de memoria estándar antes de que FastMM4 pueda ganar el control. '#13#10#13#10 + 'Si está utilizando un interceptor de excepciones como MadExcept (o cualquier otra herramienta que modifique el orden de inicialización de las units),'#13#10 + //Fixed by MFM 'vaya a su página de configuración y asegúrese de que FastMM4.pas es inicializada antes que cualquier otra unit.'; MemoryAllocatedTitle = 'FastMM4 no se puede instalar - Ya se ha reservado memoria'; {Leak checking messages} LeakLogHeader = 'Un bloque de memoria ha escapado. El tamaño es: '; LeakMessageHeader = 'Esta aplicación ha tenido escapes de memoria. '; SmallLeakDetail = 'Los escapes de bloques pequeños son' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (excluyendo los escapes esperados registrados por apuntador)' {$endif} + ':'#13#10; LargeLeakDetail = 'Los escapes de bloques medianos y grandes son' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (excluyendo los escapes esperados registrados por apuntador)' {$endif} + ': '; BytesMessage = ' bytes: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Nota: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Este chequeo de escape de memoria sólo se realiza si Delphi está ejecutándose en el mismo ordenador. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Los detalles del escape de memoria se salvan a un fichero texto en la misma carpeta donde reside esta aplicación. ' {$else} + 'Abilite "LogMemoryLeakDetailToFile" para obtener un *log* con los detalles de los escapes de memoria. ' {$endif} {$else} + 'Para obtener un *log* con los detalles de los escapes de memoria, abilite las definiciones condicionales "FullDebugMode" y "LogMemoryLeakDetailToFile". ' {$endif} + 'Para desabilitar este chequeo de escapes de memoria, indefina "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Detectado Escape de Memoria'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM ha sido instalado.'; FastMMInstallSharedMsg = 'Compartiendo una instancia existente de FastMM.'; FastMMUninstallMsg = 'FastMM ha sido desinstalado.'; FastMMUninstallSharedMsg = 'Cesando de compartir una instancia existente de FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'Operación en el MM luego de desinstalarlo.'; InvalidGetMemMsg = 'FastMM ha detectado una llamada a GetMem luego de desinstalar FastMM.'; InvalidFreeMemMsg = 'FastMM ha detectado una llamada a FreeMem luego de desinstalar FastMM.'; InvalidReallocMemMsg = 'FastMM ha detectado una llamada a ReallocMem luego de desinstalar FastMM.'; InvalidAllocMemMsg = 'FastMM ha detectado una llamada a ReallocMem luego de desinstalar FastMM.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:44
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Russian In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Russian Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Russian translation by Paul Ishenin. 2006-07-18 Some minor updates by Andrey V. Shtukaturov. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Unknown'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'Òåêóùàÿ òðàññèðîâêà ñòåêà óêàçûâàåò íà ýòó îøèáêó (âõîæäåíèÿ): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Òåêóùèé äàìï ïàìÿòè èç 256 áàéò íà÷èíàÿ ñ àäðåñà '; {Block Error Messages} BlockScanLogHeader = 'Âûäåëåííûé áëîê çàïðîòîêîëèðîâàí ïðîöåäóðîé LogAllocatedBlocksToFile. Ðàçìåð: '; ErrorMsgHeader = 'FastMM îáíàðóæèë îøèáêó âî âðåìÿ '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'ñêàíèðîâàíèÿ îñâîáîæäåííîãî áëîêà'; OperationMsg = ' îïåðàöèÿ. '; BlockHeaderCorruptedMsg = 'Çàãîëîâîê áëîêà ïîâðåæäåí. '; BlockFooterCorruptedMsg = 'Íèæíÿÿ ÷àñòü áëîêà ïîâðåæäåíà. '; FreeModifiedErrorMsg = 'FastMM îáíàðóæèë ÷òî áëîê áûë ìîäèôèöèðîâàí ïîñëå åãî îñâîáîæäåíèÿ. '; DoubleFreeErrorMsg = 'Áûëà ïðåäïðèíÿòà ïîïûòêà îñâîáîäèòü/ïåðåâûäåëèòü íå âûäåëåííûé áëîê.'; PreviousBlockSizeMsg = #13#10#13#10'Ðàçìåð ïðåäûäóùåãî áëîêà áûë: '; CurrentBlockSizeMsg = #13#10#13#10'Ðàçìåð áëîêà: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Òðàññèðîâêà ñòåêà êîãäà ýòîò áëîê áûë ðàíåå âûäåëåí (âõîæäåíèÿ):'; StackTraceAtAllocMsg = #13#10#13#10'Òðàññèðîâêà ñòåêà ïðè âûäåëåíèè áëîêà (âõîæäåíèÿ):'; PreviousObjectClassMsg = #13#10#13#10'Áëîê áûë ðàíåå èñïîëüçîâàí äëÿ îáúåêòà êëàññà: '; CurrentObjectClassMsg = #13#10#13#10'Áëîê â íàñòîÿùåå âðåìÿ èñïîëüçóåòñÿ äëÿ îáúåêòà êëàññà: '; PreviousAllocationGroupMsg = #13#10#13#10'Âûäåëåííàÿ ãðóïïà áûëà: '; PreviousAllocationNumberMsg = #13#10#13#10'Âûäåëåííûé íîìåð áûë: '; CurrentAllocationGroupMsg = #13#10#13#10'Âûäåëåííàÿ ãðóïïà ñòàëà: '; CurrentAllocationNumberMsg = #13#10#13#10'Âûäåëåííûé íîìåð ñòàë: '; StackTraceAtFreeMsg = #13#10#13#10'Òðàññèðîâêà ñòåêà êîãäà ýòîò áëîê áûë ðàíåå îñâîáîæäåí (âõîæäåíèÿ):'; BlockErrorMsgTitle = 'Îáíàðóæåíà îøèáêà ïàìÿòè.'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM îáíàðóæèë ïîïûòêó âûçâàòü âèðòóàëüíûé ìåòîä îñâîáîæäåííîãî îáúåêòà. Ñåé÷àñ áóäåò âûçâàíî íàðóøåíèå äîñòóïà äëÿ ïðåðûâàíèÿ òåêóùåé îïåðàöèè.'; InterfaceErrorHeader = 'FastMM îáíàðóæèë ïîïûòêó èñïîëüçîâàòü èíòåðôåéñ îñâîáîæäåííîãî îáúåêòà. Ñåé÷àñ áóäåò âûçâàíî íàðóøåíèå äîñòóïà äëÿ ïðåðûâàíèÿ òåêóùåé îïåðàöèè.'; BlockHeaderCorruptedNoHistoryMsg = ' Ê ñîæàëåíèþ çàãîëîâîê áëîêà ïîâðåæäåí è èñòîðèÿ íå äîñòóïíà.'; FreedObjectClassMsg = #13#10#13#10'Êëàññ îñâîáîæäåííîãî îáúåêòà: '; VirtualMethodName = #13#10#13#10'Âèðòóàëüíûé ìåòîä: '; VirtualMethodOffset = 'Ñìåùåíèå +'; VirtualMethodAddress = #13#10#13#10'Àäðåñ âèðòóàëüíîãî ìåòîäà: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Òðàññèðîâêà ñòåêà êîãäà ïàìÿòü ïîä îáúåêò áûëà âûäåëåíà (âõîæäåíèÿ):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Òðàññèðîâêà ñòåêà êîãäà ïàìÿòü ïîä îáúåêò áûëà âïîñëåäñòâèè îñâîáîæäåíà (âõîæäåíèÿ):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 óæå óñòàíîâëåí.'; AlreadyInstalledTitle = 'Óæå óñòàíîâëåí.'; OtherMMInstalledMsg = 'FastMM4 íå ìîæåò áûòü óñòàíîâëåí ïðè óñòàíîâëåííîì äðóãîì ìåíåäæåðå ïàìÿòè.' + #13#10'Åñëè âû æåëàåòå èñïîëüçîâàòü FastMM4, ïîæàëóéñòà óáåäèòåñü ÷òî FastMM4.pas ÿâëÿåòñÿ ñàìûì ïåðâûì ìîäóëåì â' + #13#10'ñåêöèè "uses" âàøåãî ''s .dpr ôàéëà ïðîåêòà.'; OtherMMInstalledTitle = 'Íåâîçìîæíî óñòàíîâèòü FastMM4 - óæå óñòàíîâëåí äðóãîé ìåíåäæåð ïàìÿòè.'; MemoryAllocatedMsg = 'FastMM4 íåâîçìîæíî óñòàíîâèòü êîãäà ïàìÿòü óæå áûëà ' + 'âûäåëåíà ñòàíäàðòíûì ìåíåäæåðîì ïàìÿòè.'#13#10'FastMM4.pas ÄÎËÆÅÍ ' + 'áûòü ïåðâûì ìîäóëåì â âàøåì ôàéëå .dpr ôàéëå ïðîåêòà, èíà÷å ïàìÿòü ìîæåò ' + 'áûòü âûäåëåíà'#13#10'÷åðåç ñòàíäàðòíûé ìåíåäæåð ïàìÿòè ïåðåä òåì êàê FastMM4 ' + 'ïîëó÷èò êîíòðîëü. '#13#10#13#10'Åñëè âû èñïîëüçóåòå îáðàáîò÷èê èñêëþ÷åíèé ' + 'òèïà MadExcept (èëè ëþáîé äðóãîé èíñòðóìåíò ìîäèôèöèðóþùèé ïîðÿäîê èíèöèàëèçàöèè ' + 'ìîäóëåé),'#13#10'òî ïåðåéäèòå â ñòðàíèöó åãî êîíôèãóðàöèè è óáåäèòåñü, ÷òî ' + 'FastMM4.pas ìîäóëü èíèöèàëèçèðóåòñÿ ïåðåä ëþáûì äðóãèì ìîäóëåì.'; MemoryAllocatedTitle = 'Íå âîçìîæíî óñòàíîâèòü FastMM4 - Ïàìÿòü óæå áûëà âûäåëåíà'; {Leak checking messages} LeakLogHeader = 'Áëîê ïàìÿòè áûë âûäåëåí è íå îñâîáîæäåí. Ðàçìåð: '; LeakMessageHeader = ' ýòîì ïðèëîæåíèè ïðîèñõîäÿò óòå÷êè ïàìÿòè. '; SmallLeakDetail = 'Óòå÷êè áëîêîâ ìàëåíüêîãî ðàçìåðà' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (èñêëþ÷àÿ îæèäàåìûå óòå÷êè çàðåãèñòðèðîâàííûå ïî óêàçàòåëþ)' {$endif} + ':'#13#10; LargeLeakDetail = 'Ðàçìåðû óòå÷åê áëîêîâ ñðåäíåãî ðàçìåðà' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (èñêëþ÷àÿ îæèäàåìûå óòå÷êè çàðåãèñòðèðîâàííûå ïî óêàçàòåëþ)' {$endif} + ': '; BytesMessage = ' áàéò: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Note: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Ýòà ïðîâåðêà óòå÷êè ïàìÿòè ïðîèçâîäèòñÿ òîëüêî â ñëó÷àå îäíîâðåìåííîé ðàáîòû Delphi íà òîì æå êîìïüþòåðå. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Äåòàëüíàÿ èíôîðìàöèÿ îá óòå÷êàõ ïàìÿòè æóðíàëèðóåòñÿ â òåêñòîâûé ôàéë â òîì æå êàòàëîãå, ÷òî è ïðèëîæåíèå. ' {$else} + 'Âêëþ÷èòå "LogMemoryLeakDetailToFile" äëÿ ïîëó÷åíèÿ æóðíàëà, ñîäåðæàùåãî äåòàëüíóþ èíôîðìàöèþ îá óòå÷êàõ ïàìÿòè. ' {$endif} {$else} + 'Äëÿ ïîëó÷åíèÿ æóðíàëà, ñîäåðæàùåãî äåòàëüíóþ èíôîðìàöèþ îá óòå÷êàõ ïàìÿòè, âêëþ÷èòå óñëîâèÿ êîìïèëÿöèè "FullDebugMode" è "LogMemoryLeakDetailToFile". ' {$endif} + 'Äëÿ âûêëþ÷åíèÿ ýòèõ ïðîâåðîê óòå÷êè ïàìÿòè, óáåðèòå îïðåäåëåíèå "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Îáíàðóæåíà óòå÷êà ïàìÿòè'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM has been installed.'; FastMMInstallSharedMsg = 'Sharing an existing instance of FastMM.'; FastMMUninstallMsg = 'FastMM has been uninstalled.'; FastMMUninstallSharedMsg = 'Stopped sharing an existing instance of FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'MM Operation after uninstall.'; InvalidGetMemMsg = 'FastMM has detected a GetMem call after FastMM was uninstalled.'; InvalidFreeMemMsg = 'FastMM has detected a FreeMem call after FastMM was uninstalled.'; InvalidReallocMemMsg = 'FastMM has detected a ReallocMem call after FastMM was uninstalled.'; InvalidAllocMemMsg = 'FastMM has detected a ReallocMem call after FastMM was uninstalled.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:41
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Portuguese In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Portuguese Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- (This appears to be a binary file; contents omitted.) |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:41
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Portuguese (Brazil) In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Portuguese (Brazil) Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Portuguese (Brazil) translation by Johni Jeferson Capeletto (cap...@gm...) - Love you Julia. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventosLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Desconhecida'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'A pilha atual que leva a esse erro (endereços de retorno): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Dump de memória atual de 256 bytes iniciando no endereço '; {Block Error Messages} BlockScanLogHeader = 'Bloco alocado logado por LogAllocatedBlocksToFile. O tamanho é: '; ErrorMsgHeader = 'FastMM detectou um erro durante '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'busca de bloco livre'; OperationMsg = ' operação. '; BlockHeaderCorruptedMsg = 'O cabeçalho do bloco foi corrompido. '; BlockFooterCorruptedMsg = 'O rodapé do bloco foi corrompido. '; FreeModifiedErrorMsg = 'FastMM detectou que um bloco foi modificado após ter sido liberado. '; DoubleFreeErrorMsg = 'Uma tentativa foi feita para liberar/realocar um bloco não alocado.'; PreviousBlockSizeMsg = #13#10#13#10'O tamanho anterior do bloco era: '; CurrentBlockSizeMsg = #13#10#13#10'O tamanho do bloco é: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Caminho da pilha quando esse bloco foi alocado anteriormente (endereços de retorno):'; StackTraceAtAllocMsg = #13#10#13#10'Caminho da pilha quando esse bloco foi alocado (endereços de retorno):'; PreviousObjectClassMsg = #13#10#13#10'O bloco foi usado anteriormente por um objeto da classe: '; CurrentObjectClassMsg = #13#10#13#10'O bloco está sendo usado por um objeto da classe: '; PreviousAllocationGroupMsg = #13#10#13#10'O grupo de alocação era: '; PreviousAllocationNumberMsg = #13#10#13#10'O número da alocação era: '; CurrentAllocationGroupMsg = #13#10#13#10'O grupo de alocação é: '; CurrentAllocationNumberMsg = #13#10#13#10'O número da alocação é: '; StackTraceAtFreeMsg = #13#10#13#10'Caminho da pilha quando o bloco foi liberado anteriormente (endereços de retorno):'; BlockErrorMsgTitle = 'Erro de memória detectado'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM detectou uma tentativa de chamada a um método virtual de um objeto liberado. Uma violação de acesso será disparada para abortar a operação corrente.'; InterfaceErrorHeader = 'FastMM detectou uma tentativa de uso de uma interface de um objeto liberado. Uma violação de acesso será disparada para abortar a operação corrente.'; BlockHeaderCorruptedNoHistoryMsg = ' Infelizmente o cabeçalho do bloco foi corrompido e a história não está disponível.'; FreedObjectClassMsg = #13#10#13#10'Classe do objeto liberado: '; VirtualMethodName = #13#10#13#10'Método virtual: '; VirtualMethodOffset = 'Offset +'; VirtualMethodAddress = #13#10#13#10'Endereço do método virtual: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Caminho da pilha quando o objeto foi alocado (endereços de retorno):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Caminho da pilha quando o objeto foi liberado (endereços de retorno):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 já foi instalado.'; AlreadyInstalledTitle = 'Já foi instalado.'; OtherMMInstalledMsg = 'FastMM4 não pode ser instalado já que outro gerenciador externo ' + 'de memória já foi instalado.'#13#10'Se você quer usar o FastMM4, ' + 'tenha certeza que a unit FastMM4.pas seja a primeira na seção "uses"' + #13#10'do arquivo .dpr do seu projeto.'; OtherMMInstalledTitle = 'Impossível instalar FastMM4 - Outro gerenciador de memória já está instalado'; MemoryAllocatedMsg = 'O FastMM4 não pode ser instalado já que a memória já foi ' + 'alocada através do gerenciador de memória padrão.'#13#10'FastMM4.pas DEVE ' + 'ser a primeira unit no arquivo .dpr do seu projeto, caso contrário a memória pode ' + 'ser alocada'#13#10'através do gerenciador de memória padrão antes que o FastMM ' + 'ganhe o controle. '#13#10#13#10'Se você estiver usando um interceptador de exceções ' + 'como MadExcept (ou qualquer outra ferramenta que modifica a ordem de inicialização da ' + 'unit),'#13#10'vá para sua página de configuração e tenha certeza que a unit ' + 'FastMM4.pas seja inicializada antes de qualquer outra unit.'; MemoryAllocatedTitle = 'Impossível instalar FastMM4 - A memória já foi alocada'; {Leak checking messages} LeakLogHeader = 'Um bloco de memória vazou. O tamanho é: '; LeakMessageHeader = 'Essa aplicação teve vazamentos de memória. '; SmallLeakDetail = 'Os vazamentos dos blocos pequenos são' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (excluindo os vazamentos esperados registrados por ponteiro)' {$endif} + ':'#13#10; LargeLeakDetail = 'O tamanho dos vazamentos dos blocos médios e grandes são' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (excluindo os vazamentos esperados registrados por ponteiro)' {$endif} + ': '; BytesMessage = ' bytes: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Nota: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Essa checagem de vazamento de memória somente é feita se o Delphi está rodando atualmente no mesmo computador. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'O detalhe do vazamento de memória está logado em um arquivo texto na mesma pasta que essa aplicação. ' {$else} + 'Habilite o DEFINE "LogMemoryLeakDetailToFile" para obter um arquivo de log contendo detalhes dos vazamentos de memória. ' {$endif} {$else} + 'Para obter um arquivo de log contendo detalhes dos vazamentos de memória, habilite os DEFINES "FullDebugMode" e "LogMemoryLeakDetailToFile". ' {$endif} + 'Para desabilitar essa checagem de vazamento de memória, desabilite o DEFINE "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Vazamento de memória detectado'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM foi instalado.'; FastMMInstallSharedMsg = 'Compartilhando uma instancia existente do FastMM.'; FastMMUninstallMsg = 'FastMM foi desinstalado.'; FastMMUninstallSharedMsg = 'Parando de compartilhar uma instancia existente do FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'Operação no Gerenciador de Memória após desinstalação.'; InvalidGetMemMsg = 'FastMM detectou uma chamada GetMem depois que o FastMM foi desinstalado.'; InvalidFreeMemMsg = 'FastMM detectou uma chamada FreeMem depois que o FastMM foi desinstalado.'; InvalidReallocMemMsg = 'FastMM detectou uma chamada ReallocMem depois que o FastMM foi desinstalado.'; InvalidAllocMemMsg = 'FastMM detectou uma chamada ReallocMem depois que o FastMM foi desinstalado.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:35
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Italian In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Italian Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Italian translation by Luigi D. Sandon. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Sconosciuta'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'La trama di stack corrente che ha condotto a questo errore (indirizzi di ritorno): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Dump della memoria di 256 byte partendo dall''indirizzo del puntatore '; {Block Error Messages} BlockScanLogHeader = 'Blocco allocato registrato da LogAllocatedBlocksToFile. La dimensione è: '; ErrorMsgHeader = 'FastMM ha rilevato un errore durante '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'scansione blocco libero'; OperationMsg = ' operazione. '; BlockHeaderCorruptedMsg = 'L''intestazione del blocco è stata corrotta. '; BlockFooterCorruptedMsg = 'Il terminatore del blocco è stato corrotto. '; FreeModifiedErrorMsg = 'FastMM ha rilevato che un blocco è stato modificato dopo essere stato disallocato. '; DoubleFreeErrorMsg = 'Tentativo di disallocare/reallocare un blocco non allocato.'; PreviousBlockSizeMsg = #13#10#13#10'La dimensione precedente del blocco era: '; CurrentBlockSizeMsg = #13#10#13#10'La dimensione del blocco è: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Trama di stack quando il blocco è stato precedentemente allocato (indirizzi di ritorno):'; StackTraceAtAllocMsg = #13#10#13#10'Trama di stack quando il blocco è stato allocato (indirizzi di ritorno):'; PreviousObjectClassMsg = #13#10#13#10'Il blocco è stato usato in precedenza per una istanza della classe: '; CurrentObjectClassMsg = #13#10#13#10'Il blocco è attualmente usato da una istanza della classe: '; PreviousAllocationGroupMsg = #13#10#13#10'Il gruppo di allocazione era: '; PreviousAllocationNumberMsg = #13#10#13#10'Il numero di allocazione era: '; CurrentAllocationGroupMsg = #13#10#13#10'Il gruppo di allocazione è: '; CurrentAllocationNumberMsg = #13#10#13#10'Il numero di allocazione è: '; StackTraceAtFreeMsg = #13#10#13#10'Trama di stack quando il blocco è stato precedentemente deallocato (indirizzi di ritorno):'; BlockErrorMsgTitle = 'Rilevato Errore di Memoria'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM ha rilevato un tentativo di chiamare un metodo virtuale di una istanza deallocata. Sarà generata una eccezione di Violazione di Accesso per abortire l''operazione corrente.'; InterfaceErrorHeader = 'FastMM ha rilevato un tentativo di usare una interfaccia di una istanza deallocata. Sarà generata una eccezione di Violazione di Accesso per abortire l''operazione corrente.'; BlockHeaderCorruptedNoHistoryMsg = ' Sfortunametamente l''intestazione del blocco è stata corrotta, quindi non è disponibile alcuna storia.'; FreedObjectClassMsg = #13#10#13#10'Deallocata istanza della classe: '; VirtualMethodName = #13#10#13#10'Metodo virtuale: '; VirtualMethodOffset = 'Offset +'; VirtualMethodAddress = #13#10#13#10'Indirizzo metodo virtuale: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Trama di stack quando l''istanza è stata allocata (indirizzi di ritorno):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Trana di stack quando l''oggetto è stato in seguito deallocato (indirizzi di ritorno):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 è già installato.'; AlreadyInstalledTitle = 'Già installato.'; OtherMMInstalledMsg = 'FastMM4 non può essere installato perché un altro gestore della memoria ' + 'ha già installato sé stesso.'#13#10'Se volete usare FastMM4, ' + 'assicuratevi che FastMM4.pas sia la prima unit nella sezione "uses"' + #13#10'del file .dpr del vostro progetto.'; OtherMMInstalledTitle = 'Impossibile installare FastMM4 - un altro gestore della memoria è già installato'; MemoryAllocatedMsg = 'FastMM4 non può essere installato perché della memoria è già ' + 'stata allocata dal gestore della memoria di default.'#13#10 + 'FastMM4.pas DEVE essere la prima unit nel file .dpr del progetto, ' + 'altrimenti la memoria può essere allocata dal gestore di default ' + 'prima che FastMM4 ottenga il controllo.'#13#10#13#10 + 'Se state usando un gestore delle eccezioni come MadExcept (o qualsiasi ' + 'altro tool che modifichi l''ordine di inizializzazione delle unit), ' + 'configurarlo in modo che la unit FastMM4.pas sia inizializzata prima di qualsiasi altra.'; MemoryAllocatedTitle = 'Impossibile installare FastMM4 - La memoria è già stata allocata'; {Leak checking messages} LeakLogHeader = 'Leak di un blocco. La dimensione è: '; LeakMessageHeader = 'L''applicazione ha dei leak di memoria. '; SmallLeakDetail = 'I leak di piccoli blocchi sono' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (sono esclusi i leak attesi registrati da puntatori)' {$endif} + ':'#13#10; LargeLeakDetail = 'Le dimensioni dei leak di blocchi medi e grandi sono' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (sono esclusi i leak attesi registrati da puntatori)' {$endif} + ': '; BytesMessage = ' byte: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Nota: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Questi controlli di leak della memoria sono effettuati solo se Delphi è in funzione sullo stesso computer. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'I dettagli sui leak della memoria sono registrati in un file di testo nella stessa cartella di questa applicazione. ' {$else} + 'Abilitare "LogMemoryLeakDetailToFile" per ottenere un file di log contenente i dettagli sui leak della memoria. ' {$endif} {$else} + 'Per ottenere un file di log contenente i dettagli sui leak della memoria, abilitate le direttive condizionali "FullDebugMode" e "LogMemoryLeakDetailToFile". ' {$endif} + 'Per disabilitare i controlli dei leak della memoria, non definire la direttiva "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Rilevato leak della memoria'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM è stato installato.'; FastMMInstallSharedMsg = 'Inizio condivisione di una istanza esistente di FastMM.'; FastMMUninstallMsg = 'FastMM è stato disinstallato.'; FastMMUninstallSharedMsg = 'Termine della condivisione di una istanza esistente di FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'MM operazione dopo la disinstallazione.'; InvalidGetMemMsg = 'FastMM ha rilevato una chiamata a GetMem dopo che FastMM è stato disinstallato.'; InvalidFreeMemMsg = 'FastMM ha rilevato una chiamata a FreeMem dopo che FastMM è stato disinstallato.'; InvalidReallocMemMsg = 'FastMM ha rilevato una chiamata a ReallocMem dopo che FastMM è stato disinstallato.'; InvalidAllocMemMsg = 'FastMM ha rilevato una chiamata ad AllocMem dopo che FastMM è stato disinstallato.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:32
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Polish In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Polish Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- (This appears to be a binary file; contents omitted.) |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:28
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Indonesian In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Indonesian Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Indonesian translation by Zaenal Mutaqin. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_Laporan_ManajerMemori.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Tidak dikenal'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'Penelusuran stack saat ini membawa ke kesalahan ini (alamat balik): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Dump memori saat ini dari 256 byte dimulai pada alamat pointer '; {Block Error Messages} BlockScanLogHeader = 'Allocated block logged by LogAllocatedBlocksToFile. The size is: '; ErrorMsgHeader = 'FastMM mendeteksi terjadi kesalahan sewaktu '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'membebaskan pemantauan blok'; OperationMsg = ' operasi. '; BlockHeaderCorruptedMsg = 'Kepala blok sudah terkorupsi. '; BlockFooterCorruptedMsg = 'Kaki blok sudah terkorupsi. '; FreeModifiedErrorMsg = 'FastMM mendeteksi bahwa blok sudah diubah setelah dibebaskan. '; DoubleFreeErrorMsg = 'Percobaan dilakukan untuk membebaskan/realokasi blok yang tidak dialokasikan'; PreviousBlockSizeMsg = #13#10#13#10'Besar blok sebelumnya adalah: '; CurrentBlockSizeMsg = #13#10#13#10'Besar blok adalah: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Penelusuran stack ketika blok ini sebelumnya dialokasikan (alamat balik):'; StackTraceAtAllocMsg = #13#10#13#10'Penelusuran stack ketika blok ini dialokasikan (alamat balik):'; PreviousObjectClassMsg = #13#10#13#10'Blok yang sebelumnya digunakan untuk obyek dari kelas: '; CurrentObjectClassMsg = #13#10#13#10'Blok yang digunakan saat ini untuk obyek dari kelas: '; PreviousAllocationGroupMsg = #13#10#13#10'The allocation group was: '; PreviousAllocationNumberMsg = #13#10#13#10'The allocation number was: '; CurrentAllocationGroupMsg = #13#10#13#10'The allocation group is: '; CurrentAllocationNumberMsg = #13#10#13#10'The allocation number is: '; StackTraceAtFreeMsg = #13#10#13#10'Penelusuran stack ketika blok sebelumnya dibebaskan (alamat balik):'; BlockErrorMsgTitle = 'Kesalahan Memori Terdeteksi'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM mendeteksi percobaan pemanggilan metode virtual pada obyek yang dibebaskan. Pelanggaran akses akan ditampilkan sekarang untuk membatalkan operasi saat ini.'; InterfaceErrorHeader = 'FastMM mendeteksi percobaan penggunaan antar muka dari obyek yang sudah dibebaskan. Pelanggaran akses akan ditampilkan sekarang untuk membatalkan operasi saat ini.'; BlockHeaderCorruptedNoHistoryMsg = ' Kebetulan kepala blok sudah terkorupsi oleh karenanya tidak ada histori yang tersedia.'; FreedObjectClassMsg = #13#10#13#10'Kelas obyek yang dibebaskan: '; VirtualMethodName = #13#10#13#10'Metode virtual: '; VirtualMethodOffset = 'Ofset +'; VirtualMethodAddress = #13#10#13#10'Alamat metode virtual: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Penelusuran stack ketika obyek dialokasikan (alamat balik):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Penelusuran stack ketika obyek dibebaskan secara subsekuen (alamat balik):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 sudah diinstalasi.'; AlreadyInstalledTitle = 'Sudah terinstalasi.'; OtherMMInstalledMsg = 'FastMM4 tidak bisa diinstalasi karena manajer memori pihak ketiga ' + 'sudah menginstalasi dirinya sendiri.'#13#10'Jika anda ingin menggunakan FastMM4, ' + 'pastikan bahwa FastMM4.pas adalah untit paling pertama dalam seksi "uses"' + #13#10'dari file proyek .dpr anda.'; OtherMMInstalledTitle = 'Tidak bisa menginstalasi FastMM4 - Manajer memori lain sudah diinstalasi'; MemoryAllocatedMsg = 'FastMM4 tidak bisa menginstalasi karena memori sudah ' + 'dialokasikan melalui manajer memori default.'#13#10'FastMM4.pas HARUS ' + 'unit pertama dalam file proyek .dpr anda, sebaliknya memori bisa ' + 'dialokasikan '#13#10'melalui manajer memori default sebelum FastMM4 ' + 'mendapatkan kontrolnya. '#13#10#13#10'Jika anda menggunakan penjebak kekecualian ' + 'seperti MadExcept (atau piranti lain yang mengubah urutan inisialiasai unit, ' + #13#10'lihat ke dalam halaman konfigurasinya dan pastikan bahwa ' + 'unit FastMM4.pas diinisialisasi sebelum unit lainnya.'; MemoryAllocatedTitle = 'Tidak bisa menginstalasi FastMM4 - Memori sudah dialokasikan'; {Leak checking messages} LeakLogHeader = 'Blok memori sudah bocor. Besarnya adalah: '; LeakMessageHeader = 'Aplikasi ini mempunyai kebocoran memori. '; SmallLeakDetail = 'Blok kecil kebocoran adalah' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (tidak termasuk kebocoran yang didaftarkan oleh pointer)' {$endif} + ':'#13#10; LargeLeakDetail = 'Besar dari kebocoran blok medium dan besar adalah' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (tidak termasuk kebocoran yang terdaftar oleh pointer)' {$endif} + ': '; BytesMessage = ' byte: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Catatan: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Kebocoran memori ini hanya ditampilkan jika Delphi saat ini berjalan pada komputer yang sama. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Perincian kebocoran memori dicatat ke file teks dalam folder yang sama dengan aplikasi ini. ' {$else} + 'Hidupkan "LogMemoryLeakDetailToFile" untuk mendapatkan file log yang berisi perincian kebocoran memori. ' {$endif} {$else} + 'Untuk mendapatkan file log yang berisi perincian kebocoran memori, hidupkan definisi kondisional "FullDebugMode" dan "LogMemoryLeakDetailToFile". ' {$endif} + 'Untuk mematikan pemeriksaan kebocoran, jangan definisikan "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Kebocoran Memori Terdeteksi'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM sudah diinstalasi.'; FastMMInstallSharedMsg = 'Membagi instan FastMM yang sudah ada.'; FastMMUninstallMsg = 'FastMM sudah di deinstalasi.'; FastMMUninstallSharedMsg = 'Pembagian instan FastMM yang ada dihentikan.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'Operasi MM setelah deinstalasi.'; InvalidGetMemMsg = 'FastMM mendeteksi pemanggilan GetMem setelah FastMM di deinstalasi.'; InvalidFreeMemMsg = 'FastMM mendeteksi pemanggilan FreeMem setelah FastMM di deinstalasi.'; InvalidReallocMemMsg = 'FastMM mendeteksi pemanggilan ReallocMem setelah FastMM di deinstalasi.'; InvalidAllocMemMsg = 'FastMM mendeteksi pemanggilan ReallocMem setelah FastMM di deinstalasi.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:27
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/English In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/English Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages English translation by Pierre le Riche. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Unknown'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'The current stack trace leading to this error (return addresses): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Current memory dump of 256 bytes starting at pointer address '; {Block Error Messages} BlockScanLogHeader = 'Allocated block logged by LogAllocatedBlocksToFile. The size is: '; ErrorMsgHeader = 'FastMM has detected an error during a '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'free block scan'; OperationMsg = ' operation. '; BlockHeaderCorruptedMsg = 'The block header has been corrupted. '; BlockFooterCorruptedMsg = 'The block footer has been corrupted. '; FreeModifiedErrorMsg = 'FastMM detected that a block has been modified after being freed. '; DoubleFreeErrorMsg = 'An attempt has been made to free/reallocate an unallocated block.'; PreviousBlockSizeMsg = #13#10#13#10'The previous block size was: '; CurrentBlockSizeMsg = #13#10#13#10'The block size is: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Stack trace of when this block was previously allocated (return addresses):'; StackTraceAtAllocMsg = #13#10#13#10'Stack trace of when this block was allocated (return addresses):'; PreviousObjectClassMsg = #13#10#13#10'The block was previously used for an object of class: '; CurrentObjectClassMsg = #13#10#13#10'The block is currently used for an object of class: '; PreviousAllocationGroupMsg = #13#10#13#10'The allocation group was: '; PreviousAllocationNumberMsg = #13#10#13#10'The allocation number was: '; CurrentAllocationGroupMsg = #13#10#13#10'The allocation group is: '; CurrentAllocationNumberMsg = #13#10#13#10'The allocation number is: '; StackTraceAtFreeMsg = #13#10#13#10'Stack trace of when the block was previously freed (return addresses):'; BlockErrorMsgTitle = 'Memory Error Detected'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM has detected an attempt to call a virtual method on a freed object. An access violation will now be raised in order to abort the current operation.'; InterfaceErrorHeader = 'FastMM has detected an attempt to use an interface of a freed object. An access violation will now be raised in order to abort the current operation.'; BlockHeaderCorruptedNoHistoryMsg = ' Unfortunately the block header has been corrupted so no history is available.'; FreedObjectClassMsg = #13#10#13#10'Freed object class: '; VirtualMethodName = #13#10#13#10'Virtual method: '; VirtualMethodOffset = 'Offset +'; VirtualMethodAddress = #13#10#13#10'Virtual method address: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Stack trace of when the object was allocated (return addresses):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Stack trace of when the object was subsequently freed (return addresses):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 is already installed.'; AlreadyInstalledTitle = 'Already installed.'; OtherMMInstalledMsg = 'FastMM4 cannot be installed since another third party memory ' + 'manager has already installed itself.'#13#10'If you want to use FastMM4, ' + 'please make sure that FastMM4.pas is the very first unit in the "uses"' + #13#10'section of your project''s .dpr file.'; OtherMMInstalledTitle = 'Cannot install FastMM4 - Another memory manager is already installed'; MemoryAllocatedMsg = 'FastMM4 cannot install since memory has already been ' + 'allocated through the default memory manager.'#13#10'FastMM4.pas MUST ' + 'be the first unit in your project''s .dpr file, otherwise memory may ' + 'be allocated'#13#10'through the default memory manager before FastMM4 ' + 'gains control. '#13#10#13#10'If you are using an exception trapper ' + 'like MadExcept (or any tool that modifies the unit initialization ' + 'order),'#13#10'go into its configuration page and ensure that the ' + 'FastMM4.pas unit is initialized before any other unit.'; MemoryAllocatedTitle = 'Cannot install FastMM4 - Memory has already been allocated'; {Leak checking messages} LeakLogHeader = 'A memory block has been leaked. The size is: '; LeakMessageHeader = 'This application has leaked memory. '; SmallLeakDetail = 'The small block leaks are' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (excluding expected leaks registered by pointer)' {$endif} + ':'#13#10; LargeLeakDetail = 'The sizes of leaked medium and large blocks are' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (excluding expected leaks registered by pointer)' {$endif} + ': '; BytesMessage = ' bytes: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Note: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'This memory leak check is only performed if Delphi is currently running on the same computer. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Memory leak detail is logged to a text file in the same folder as this application. ' {$else} + 'Enable the "LogMemoryLeakDetailToFile" to obtain a log file containing detail on memory leaks. ' {$endif} {$else} + 'To obtain a log file containing detail on memory leaks, enable the "FullDebugMode" and "LogMemoryLeakDetailToFile" conditional defines. ' {$endif} + 'To disable this memory leak check, undefine "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Memory Leak Detected'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM has been installed.'; FastMMInstallSharedMsg = 'Sharing an existing instance of FastMM.'; FastMMUninstallMsg = 'FastMM has been uninstalled.'; FastMMUninstallSharedMsg = 'Stopped sharing an existing instance of FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'MM Operation after uninstall.'; InvalidGetMemMsg = 'FastMM has detected a GetMem call after FastMM was uninstalled.'; InvalidFreeMemMsg = 'FastMM has detected a FreeMem call after FastMM was uninstalled.'; InvalidReallocMemMsg = 'FastMM has detected a ReallocMem call after FastMM was uninstalled.'; InvalidAllocMemMsg = 'FastMM has detected an AllocMem call after FastMM was uninstalled.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:22
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Czech In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Czech Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Czech translation by Rene Mihula. Modifications: 25.04.2005 rm Added resource strings for FastMM v4.64 compilability } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Neznámá tøída'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'Stav zásobníku volání vedoucí k této chybì (návratové adresy): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Výpis prvních 256 bytù pamìti, které zaèínají na adrese '; {Block Error Messages} BlockScanLogHeader = 'Alokované bloky byly zalogovány pomocí LogAllocatedBlocksToFile. Velikost je: '; ErrorMsgHeader = 'FastMM detekoval chyby bìhem operace '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'hledání prázdných blokù'; OperationMsg = ' . '; BlockHeaderCorruptedMsg = 'Hlavièka bloku byla pokozena. '; BlockFooterCorruptedMsg = 'Patièka bloku byla pokozena. '; FreeModifiedErrorMsg = 'FastMM dekoval modifikaci bloku po jeho uvolnìní. '; DoubleFreeErrorMsg = 'Probìhl pokus o uvolnìní / realokaci ji uvolnìného bloku.'; PreviousBlockSizeMsg = #13#10#13#10'Pøedchozí velikost bloku: '; CurrentBlockSizeMsg = #13#10#13#10'Velikost bloku: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Zásobník volání pøi pøedchozí alokaci bloku (návratové adresy):'; StackTraceAtAllocMsg = #13#10#13#10'Zásobník volání pøi alokaci bloku (návratové adresy):'; PreviousObjectClassMsg = #13#10#13#10'Blok byl ji vyuit pro objekt typu: '; CurrentObjectClassMsg = #13#10#13#10'Blok je aktuálnì vyuíván pro objekt typu: '; PreviousAllocationGroupMsg = #13#10#13#10'Alokaèní skupina byla: '; // PreviousAllocationNumberMsg = #13#10#13#10'Alokaèní èílso bylo: '; CurrentAllocationGroupMsg = #13#10#13#10'Alokaèní skupina je: '; CurrentAllocationNumberMsg = #13#10#13#10'Alokaèní èílso je: '; StackTraceAtFreeMsg = #13#10#13#10'Zásobník volání pøi pøedchozím uvolnìní bloku (návratové adresy):'; BlockErrorMsgTitle = 'Detekována chyba pamìti'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM detekoval pokus o volání virtuální metody ji uvolnìného objektu. Pro ukonèení této operace bude nyní vyhozena vyjímka (access violation).'; InterfaceErrorHeader = 'FastMM detekoval pokus o pøístup k interface ji uvolnìného objektu. Pro ukonèení této operace bude nyní vyhozena vyjímka (access violation).'; BlockHeaderCorruptedNoHistoryMsg = ' Historie je nedostupná z dùvodu pokození hlavièky bloku.'; FreedObjectClassMsg = #13#10#13#10'Typ uvolòovaného objektu: '; VirtualMethodName = #13#10#13#10'Název virtuální metody: '; VirtualMethodOffset = 'Offset +'; VirtualMethodAddress = #13#10#13#10'Adresa virtuální metody: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Zásobník volání pøi alokaci objektu (návratové adresy):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Zásobník volání pøi dodateèném uvolnìní objektu (návratové adresy):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 ji byl nainstalován.'; AlreadyInstalledTitle = 'Nainstalováno.'; OtherMMInstalledMsg = 'FastMM4 nemohl být nainstalován, protoe jiný memory ' + 'manager (MM tøetí strany) ji byl nainstalován.'#13#10'Pro pouití FastMM4 ' + 'zkontrolujte, zda je unita FastMM4.pas první unitou v sekci "uses" tohoto ' + 'projektu (.dpr soubor).'; OtherMMInstalledTitle = 'Nelze nainstalovat FastMM4 - Jiný memory manager jen ji nainstalován'; MemoryAllocatedMsg = 'FastMM4 nemohl být nainstalován, protoe jiný memory ' + 'manager (standardní MM). ji byl nainstalován.'#13#10'Pro pouití FastMM4 ' + 'zkontrolujte, zda je unita FastMM4.pas první unitou v sekci "uses" tohoto ' + 'projektu (.dpr soubor).'#13#10#13#10 + 'Pokud pouíváte nìjaký exception trapper (napø. MadExcept) nebo libovolný ' + 'jiný nástroj, který modifikuje poøadí sekcí initialization, nakonfigurujte ' + 'jej tak, aby unita FastMM4.pas byla inicializována pøed vemi ostaními unitami.'; MemoryAllocatedTitle = 'Nelze nainstalovat FastMM4 - Pamìt ji byla alokována'; {Leak checking messages} LeakLogHeader = 'Blok pamìti zùstal neuvolnìn. Velikost(i): '; LeakMessageHeader = 'Aplikace neuvolnila pouívanou pamì. '; SmallLeakDetail = 'Bloky malé velikosti' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (vyjma chyb registrovaných pomocí ukazatelù)' {$endif} + ':'#13#10; LargeLeakDetail = 'Bloky støední a velké velikosti' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (vyjma chyb registrovaných pomocí ukazatelù)' {$endif} + ': '; BytesMessage = ' bytù: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Poznámka: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Kontrola neuvolnìné pamìti je provádìna pouze pokud je prostøedí Delphi aktivní na tomté systému. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Detailní informace o neuvolnìné pamìti jsou zapsány do textového souboru v adresáøi aplikace. ' {$else} + 'Povolením dikretivy "LogMemoryLeakDetailToFile" lze do souboru logu zapsat detailní informace o neuvolnìné pamìti. ' {$endif} {$else} + 'Pro získání logu s detailními informacemi o neuvolnìné pamìti je potøeba povolit direktivy "FullDebugMode" a "LogMemoryLeakDetailToFile". ' {$endif} + 'Vypnutím direktivy "EnableMemoryLeakReporting" lze deaktivovat tuto kontrolu neuvolnìné pamìti.'#13#10 {$endif} + #0; LeakMessageTitle = 'Byla detekována neuvolnìná pamì (Memory Leak)'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM byl nataen.'; FastMMInstallSharedMsg = 'Sdílení existující instance FastMM.'; FastMMUninstallMsg = 'FastMM byl odinstalován.'; FastMMUninstallSharedMsg = 'Zastaveno sdílení existující instance FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'Detekce MM volání po odinstalování FastMM.'; InvalidGetMemMsg = 'FastMM detekoval volání GetMem, které probìhlo po odinstalaci FastMM.'; InvalidFreeMemMsg = 'FastMM detekoval volání FreeMem, které probìhlo po odinstalaci FastMM.'; InvalidReallocMemMsg = 'FastMM detekoval volání ReallocMem, které probìhlo po odinstalaci FastMM.'; InvalidAllocMemMsg = 'FastMM detekoval volání ReallocMem, které probìhlo po odinstalaci FastMM.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:21
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Belarussian In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Belarussian Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages belarussian translation by dzmitry[li] mailto:dz...@bi... Ýëåêòðîííàÿ êàðòà ãîðàäà ˳äà } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Unknown'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'Áÿãó÷àÿ òðàñ³ðî¢êà ñòýêà ïàêàçâàå íà ãýòóþ ïàìûëêó (óâàõîäæàííå): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Áÿãó÷û äàìï ïàìÿö³ ç 256 áàéò ïà÷ûíàëüíà ç àäðàñó '; {Block Error Messages} BlockScanLogHeader = 'Allocated block logged by LogAllocatedBlocksToFile. The size is: '; ErrorMsgHeader = 'FastMM âûÿâ³¢ ïàìûëêó ïàä÷àñ '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'ñêàíàâàííÿ âûçâàëåíàãà áëîêó'; OperationMsg = ' àïåðàöûÿ. '; BlockHeaderCorruptedMsg = 'Çàãàëîâàê áëîêà ïàøêîäæàíû. '; BlockFooterCorruptedMsg = 'ͳæíÿÿ ÷àñòêà áëîêà ïàøêîäæàíà. '; FreeModifiedErrorMsg = 'FastMM âûÿâ³¢ øòî áëîê áû¢ ìàäûô³êàâàíû ïàñëÿ ÿãî âûçâàëåííÿ. '; DoubleFreeErrorMsg = 'Áûëà ðàñïà÷àòà ñïðîáà âûçâàë³öü/ïåðàâûçâàë³öü íåâûëó÷àíû áëîê.'; PreviousBlockSizeMsg = #13#10#13#10'Ïàìåð ïàïÿðýäíÿãà áëîêà áû¢: '; CurrentBlockSizeMsg = #13#10#13#10'Ïàìåð áëîêà: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Òðàñ³ðî¢êà ñòýêà êàë³ ãýòû áëîê áû¢ ðàíåé âûëó÷àíû (óâàõîäæàííå):'; StackTraceAtAllocMsg = #13#10#13#10'Òðàñ³ðî¢êà ñòýêà ïðû âûëó÷ýíí³ áëîêà (óâàõîäæàííå):'; PreviousObjectClassMsg = #13#10#13#10'Áëîê áû¢ ðàíåé ñêàðûñòàíû äëÿ àá''åêòà êëàñà: '; CurrentObjectClassMsg = #13#10#13#10'Áëîê ó öÿïåðàøí³ ÷àñ âûêàðûñòî¢âàåööà äëÿ àá''åêòà êëàñà: '; PreviousAllocationGroupMsg = #13#10#13#10'The allocation group was: '; PreviousAllocationNumberMsg = #13#10#13#10'The allocation number was: '; CurrentAllocationGroupMsg = #13#10#13#10'The allocation group is: '; CurrentAllocationNumberMsg = #13#10#13#10'The allocation number is: '; StackTraceAtFreeMsg = #13#10#13#10'Òðàñ³ðî¢êà ñòýêà êàë³ ãýòû áëîê áû¢ ðàíåé âûçâàëåíû (óâàõîäæàííå):'; BlockErrorMsgTitle = 'Âûÿ¢ëåíàÿ ïàìûëêà ïàìÿö³.'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM âûÿâ³¢ ñïðîáó âûêë³êàöü â³ðòóàëüíû ìåòàä âûçâàëåíàãà àá''åêòà. Çàðàç áóäçå âûêë³êàíà ïàðóøýííå äîñòóïó äëÿ ïåðàïûíåííÿ áÿãó÷àé àïåðàöû³.'; InterfaceErrorHeader = 'FastMM âûÿâ³¢ ñïðîáó âûêàðûñòàöü ³íòýðôåéñ âûçâàëåíàãà àá''åêòà. Çàðàç áóäçå âûêë³êàíà ïàðóøýííå äîñòóïó äëÿ ïåðàïûíåííÿ áÿãó÷àé àïåðàöû³.'; BlockHeaderCorruptedNoHistoryMsg = ' Íàæàëü çàãàëîâàê áëîêà ïàøêîäæàíû ³ ã³ñòîðûÿ íå äàñòóïíàÿ.'; FreedObjectClassMsg = #13#10#13#10'Êëàñ âûçâàëåíàãà àá''åêòà: '; VirtualMethodName = #13#10#13#10'³ðòóàëüíû ìåòàä: '; VirtualMethodOffset = 'Çðóøýííå +'; VirtualMethodAddress = #13#10#13#10'Àäðàñ â³ðòóàëüíàãà ìåòàäó: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Òðàñ³ðî¢êà ñòýêà êàë³ ïàìÿöü ïàä àá''åêò áûëà âûëó÷àíà (óâàõîäæàííå):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Òðàñ³ðî¢êà ñòýêà êàë³ ïàìÿöü ïàä àá''åêò áûëà ïàñëÿ âûçâàëåíà (óâàõîäæàííå):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 óæî ¢ñòàëÿâàíû.'; AlreadyInstalledTitle = 'Óæî ¢ñòàëÿâàíû.'; OtherMMInstalledMsg = 'FastMM4 íå ìîæà áûöü óñòàëÿâàíû ïðû ¢ñòàëÿâàíûì ³íøûì ìýíýäæýðó ïàìÿö³.' + #13#10'Êàë³ âû æàäàåöå âûêàðûñòî¢âàöü FastMM4, êàë³ ëàñêà ¢ïý¢í³öåñÿ øòî FastMM4.pas ç''ÿ¢ëÿåööà ñàìûì ïåðøûì ìîäóëåì ó' + #13#10'ñåêöû³ "uses" âàøàãà ''s .dpr ôàéëà ïðàåêòó.'; OtherMMInstalledTitle = 'Íåìàã÷ûìà ¢ñòàëÿâàöü FastMM4 - óæî ¢ñòàëÿâàíû ³íøû ìýíýäæýð ïàìÿö³.'; MemoryAllocatedMsg = 'FastMM4 íåìàã÷ûìà ¢ñòàëÿâàöü êàë³ ïàìÿöü óæî áûëà ' + 'âûëó÷àíàÿ ñòàíäàðòíûì ìýíýäæýðàì ïàìÿö³.'#13#10'FastMM4.pas ÏÀ²ÍÅÍ ' + 'áûöü ïåðøûì ìîäóëåì ó âàøûì ôàéëå''s .dpr ôàéëå ïðàåêòó, ³íàêø ïàìÿöü ìîæà ' + 'áûöü âûëó÷àíà'#13#10'ïðàç ñòàíäàðòíû ìýíýäæýð ïàìÿö³ ïåðàä òûì ÿê FastMM4 ' + 'àòðûìàå êàíòðîëü. '#13#10#13#10'Êàë³ âû âûêàðûñòàåöå àïðàöî¢ø÷ûê âûêëþ÷ýííÿ¢ ' + 'òûïó MadExcept (àáî ëþáóþ ³íøàÿ ïðûëàäó, ÿêàÿ ìàäûô³êóå ïàðàäàê ³í³öûÿë³çàöû³ ' + 'ìîäóëÿ¢),'#13#10'òî ïåðàéäç³öå ¢ ñòàðîíêó ÿãî êàíô³ãóðàöû³ ³ ¢ïý¢í³öåñÿ, øòî ' + 'FastMM4.pas ìîäóëü ³í³öûÿë³çóåööà ïåðàä ëþáûì ³íøûì ìîäóëåì.'; MemoryAllocatedTitle = 'Íå ìàã÷ûìà ¢ñòàëÿâàöü FastMM4 - Ïàìÿöü óæî áûëà âûëó÷àíà'; {Leak checking messages} LeakLogHeader = 'Áëîê ïàìÿö³ áû¢ âûëó÷àíû ³ íå âûçâàëåíû. Ïàìåð: '; LeakMessageHeader = 'Ó ãýòàé ïðàãðàìå àäáûâàþööà ¢öå÷ê³ ïàìÿö³. '; SmallLeakDetail = 'Óöå÷ê³ áëîêࢠìàëàãà ïàìåðó' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (âûêëþ÷àþ÷û ÷àêàíûÿ ¢öå÷ê³ çàðýã³ñòðàâàíûÿ ïà ïàêàçàëüí³êó)' {$endif} + ':'#13#10; LargeLeakDetail = 'Ïàìåðû ¢öå÷àê áëîêࢠñÿðýäíÿãà ïàìåðó' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (âûêëþ÷àþ÷û ÷àêàíûÿ ¢öå÷ê³ çàðýã³ñòðàâàíûÿ ïà ïàêàçàëüí³êó)' {$endif} + ': '; BytesMessage = ' áàéòà¢: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Note: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Ãýòàÿ ïðàâåðêà ¢öå÷ê³ ïàìÿö³ âûðàáëÿåööà òîëüê³ ¢ âûïàäêó àäíà÷àñîâàé ïðàöû Delphi íà òûì æà êàìïóòàðû. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Äýòàë¸âàÿ ³íôàðìàöûÿ àá óöå÷êàõ ïàìÿö³ æóðíàëþåööà ¢ òýêñòàâû ôàéë ó òûì æà êàòàëîãó, øòî ³ ïðàãðàìà. ' {$else} + 'Óêëþ÷ûöå "LogMemoryLeakDetailToFile" äëÿ àòðûìàííÿ ÷àñîï³ñà, ÿê³ çìÿø÷àå äýòàë¸âóþ ³íôàðìàöûþ àá óöå÷êàõ ïàìÿö³. ' {$endif} {$else} + 'Äëÿ àòðûìàííÿ ÷àñîï³ñà, ÿê³ çìÿø÷àå äýòàë¸âóþ ³íôàðìàöûþ àá óöå÷êàõ ïàìÿö³, óêëþ÷ûöå ¢ìîâû êàìï³ëÿöû³ "FullDebugMode" ³ "LogMemoryLeakDetailToFile". ' {$endif} + 'Äëÿ âûêëþ÷ýííÿ ãýòûõ ïðàâåðàê óöå÷ê³ ïàìÿö³, ïðûáÿðûöå çíà÷ýííå "EnableMemoryLeakReporting".'#13#10 {$endif} + #0; LeakMessageTitle = 'Âûÿ¢ëåíà ¢öå÷êà ïàìÿö³'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM áû¢ óñòàëÿâàíû.'; FastMMInstallSharedMsg = 'Sharing an existing instance of FastMM.'; FastMMUninstallMsg = 'FastMM áû¢ äý³íñòàëÿâàíû.'; FastMMUninstallSharedMsg = 'Stopped sharing an existing instance of FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'MM àïåðàöû³ ïàñëÿ äý³íñòàëÿöû³.'; InvalidGetMemMsg = 'FastMM âûçíà÷û¢, øòî GetMem âûêë³êàööà ïàñëÿ òàãî ÿê FastMM áû¢ äý³íñòàëÿâàíû.'; InvalidFreeMemMsg = 'FastMM âûçíà÷û¢, øòî FreeMem âûêë³êàööà ïàñëÿ òàãî ÿê FastMM áû¢ äý³íñòàëÿâàíû.'; InvalidReallocMemMsg = 'FastMM âûçíà÷û¢, øòî ReallocMem âûêë³êàööà ïàñëÿ òàãî ÿê FastMM áû¢ äý³íñòàëÿâàíû.'; InvalidAllocMemMsg = 'FastMM âûçíà÷û¢, øòî ReallocMem âûêë³êàööà ïàñëÿ òàãî ÿê FastMM áû¢ äý³íñòàëÿâàíû.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:21
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Chinese (Simplified) In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Chinese (Simplified) Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Simplified Chinese translation by JiYuan Xie. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'δ֪'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'µ¼Ö¸ôíÎóµÄµ±Ç°¶ÑÕ»¸ú×Ù(µ÷Ó÷µ»ØµØÖ·): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'ÓÉÖ¸ÕëËùÖ¸µØÖ·¿ªÊ¼, 256×Ö½ÚµÄÄڴ浱ǰµÄÄÚÈÝ '; {Block Error Messages} BlockScanLogHeader = '±» LogAllocatedBlocksToFile ¼Ç¼µÄÒÑ·ÖÅäÄÚ´æ¿é. ´óСÊÇ: '; ErrorMsgHeader = 'FastMM ÒѼì²âµ½Ò»¸ö´íÎó, µ±Ê±ÕýÔÚ½øÐÐ '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'ɨÃè×ÔÓÉÄÚ´æ¿é'; OperationMsg = ' ²Ù×÷. '; BlockHeaderCorruptedMsg = 'ÄÚ´æ¿éÍ·²¿ÄÚÈÝÒѱ»ÆÆ»µ. '; BlockFooterCorruptedMsg = 'ÄÚ´æ¿éβ²¿ÄÚÈÝÒѱ»ÆÆ»µ. '; FreeModifiedErrorMsg = 'FastMM ¼ì²âµ½¶ÔÒÑÊÍ·ÅÄÚ´æ¿éÄÚÈݵÄÐÞ¸Ä. '; DoubleFreeErrorMsg = 'ÊÔͼÊÍ·Å/ÖØзÖÅäÒ»¸öÉÐδ·ÖÅäµÄÄÚ´æ¿é.'; PreviousBlockSizeMsg = #13#10#13#10'ÉÏ´ÎʹÓÃʱµÄÄÚ´æ¿é´óСÊÇ: '; CurrentBlockSizeMsg = #13#10#13#10'ÄÚ´æ¿éµÄ´óСÊÇ: '; StackTraceAtPrevAllocMsg = #13#10#13#10'¸ÃÄÚ´æ¿éÉϴα»·ÖÅäʱµÄ¶ÑÕ»¸ú×Ù(µ÷Ó÷µ»ØµØÖ·):'; StackTraceAtAllocMsg = #13#10#13#10'¸ÃÄÚ´æ¿é±¾´Î±»·ÖÅäʱµÄ¶ÑÕ»¸ú×Ù(µ÷Ó÷µ»ØµØÖ·):'; PreviousObjectClassMsg = #13#10#13#10'¸ÃÄÚ´æ¿éÉϴα»ÓÃÓÚÒ»¸öÊôÓÚÒÔÏÂÀàµÄ¶ÔÏó: '; CurrentObjectClassMsg = #13#10#13#10'¸ÃÄÚ´æ¿éµ±Ç°±»ÓÃÓÚÒ»¸öÊôÓÚÒÔÏÂÀàµÄ¶ÔÏó: '; PreviousAllocationGroupMsg = #13#10#13#10'·ÖÅä×éÊÇ: '; PreviousAllocationNumberMsg = #13#10#13#10'·ÖÅäºÅÂëÊÇ: '; CurrentAllocationGroupMsg = #13#10#13#10'·ÖÅä×éÊÇ: '; CurrentAllocationNumberMsg = #13#10#13#10'·ÖÅäºÅÂëÊÇ: '; StackTraceAtFreeMsg = #13#10#13#10'¸ÃÄÚ´æ¿éÉϴα»ÊÍ·ÅʱµÄ¶ÑÕ»¸ú×Ù(µ÷Ó÷µ»ØµØÖ·):'; BlockErrorMsgTitle = '¼ì²âµ½ÄÚ´æ´íÎó'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM ¼ì²âµ½¶ÔÒÑÊͷŶÔÏóµÄÐé·½·¨µÄµ÷ÓÃ. Ò»¸ö·ÃÎʳåÍ»Òì³£ÏÖÔÚ½«±»Òý·¢ÒÔÖÐÖ¹µ±Ç°µÄ²Ù×÷.'; InterfaceErrorHeader = 'FastMM ¼ì²âµ½¶ÔÒÑÊͷŶÔÏóµÄ½Ó¿ÚµÄʹÓÃ. Ò»¸ö·ÃÎʳåÍ»Òì³£ÏÖÔÚ½«±»Òý·¢ÒÔÖÐÖ¹µ±Ç°µÄ²Ù×÷.'; BlockHeaderCorruptedNoHistoryMsg = ' ²»ÐÒµØ, ÓÉÓÚÄÚ´æ¿éÍ·²¿µÄÄÚÈÝÒѱ»ÆÆ»µ, ÎÞ·¨µÃµ½¸ÃÄÚ´æ¿éµÄʹÓÃÀúÊ·.'; FreedObjectClassMsg = #13#10#13#10'±»ÊͷŵĶÔÏóËùÊôµÄÀà: '; VirtualMethodName = #13#10#13#10'Ðé·½·¨: '; VirtualMethodOffset = 'Æ«ÒƵØÖ· +'; VirtualMethodAddress = #13#10#13#10'Ðé·½·¨µÄµØÖ·: '; StackTraceAtObjectAllocMsg = #13#10#13#10'¸Ã¶ÔÏó±»·ÖÅäʱµÄ¶ÑÕ»¸ú×Ù(µ÷Ó÷µ»ØµØÖ·):'; StackTraceAtObjectFreeMsg = #13#10#13#10'¸Ã¶ÔÏóËæºó±»ÊÍ·ÅʱµÄ¶ÑÕ»¸ú×Ù(µ÷Ó÷µ»ØµØÖ·):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 ÒѾ±»°²×°'; AlreadyInstalledTitle = 'ÒѾ¼ÓÔØ'; OtherMMInstalledMsg = 'FastMM4 ÎÞ·¨±»°²×°, ÒòΪÆäËûµÚÈý·½ÄÚ´æ¹ÜÀíÆ÷ÒÑÏÈ×ÔÐа²×°.' + #13#10'Èç¹ûÄãÏëʹÓÃFastMM4, ÇëÈ·ÈÏÔÚÄãÏîÄ¿µÄ .dpr ÎļþµÄ "uses" ²¿·ÖÖÐ, ' + #13#10'FastMM4.pas ÊǵÚÒ»¸ö±»Ê¹Óõĵ¥Ôª.'; OtherMMInstalledTitle = 'ÎÞ·¨°²×°FastMM4 - ÆäËûÄÚ´æ¹ÜÀíÆ÷ÒÑÏȱ»°²×°'; MemoryAllocatedMsg = 'FastMM4 ÎÞ·¨°²×°, ÒòΪ´ËÇ°ÒÑͨ¹ýĬÈÏÄÚ´æ¹ÜÀíÆ÷·ÖÅäÁËÄÚ´æ.' + #13#10'FastMM4.pas ±ØÐëÊÇÄãÏîÄ¿µÄ .dpr ÎļþÖеÚÒ»¸ö±»Ê¹Óõĵ¥Ôª, ·ñÔò¿ÉÄÜÔÚ' + #13#10'FastMM4 µÃµ½¿ØÖÆȨ֮ǰ, Ó¦ÓóÌÐòÒѾͨ¹ýĬÈÏÄÚ´æ¹ÜÀíÆ÷·ÖÅäÁËÄÚ´æ.' + #13#10#13#10'Èç¹ûÄãʹÓÃÁËÒì³£²¶×½¹¤¾ß, Ïó MadExcept(»òÈκν«Ð޸ĵ¥Ôª³õʼ»¯Ë³ÐòµÄ¹¤¾ß),' + #13#10'Çëµ½ËüµÄÅäÖÃÒ³Ãæ,È·±£ FastMM4.pas µ¥ÔªÔÚÈκÎÆäËûµ¥ÔªÖ®Ç°±»³õʼ»¯.'; MemoryAllocatedTitle = 'ÎÞ·¨°²×° FastMM4 - ֮ǰÒѾ·ÖÅäÁËÄÚ´æ'; {Leak checking messages} LeakLogHeader = 'Ò»¸öÄÚ´æ¿éÒÑй¶. ´óСÊÇ: '; LeakMessageHeader = 'Õâ¸öÓ¦ÓóÌÐò´æÔÚÄÚ´æй¶. '; SmallLeakDetail = 'СÄÚ´æ¿éµÄй¶ÓÐ' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (²»°üÀ¨ÒÑ°´Ö¸Õë×¢²áµÄԤ֪й¶)' {$endif} + ':'#13#10; LargeLeakDetail = 'ÒÑ鶵ÄÖеȼ°´óÄÚ´æ¿éµÄ´óСÊÇ' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (²»°üÀ¨ÒÑ°´Ö¸Õë×¢²áµÄԤ֪й¶)' {$endif} + ': '; BytesMessage = ' ×Ö½Ú: '; StringBlockMessage = '×Ö·û´®'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'×¢Òâ: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Ö»Óе± Delphi ͬʱÔËÐÐÔÚͬһ¼ÆËã»úÉÏʱ²Å»á½øÐÐÄÚ´æй¶¼ì²é. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'ÄÚ´æ鶵ÄÏêϸÐÅÏ¢ÒѾ±»¼Ç¼µ½Óë±¾Ó¦ÓóÌÐòͬһĿ¼ÏµÄÒ»¸öÎı¾ÎļþÖÐ. ' {$else} + 'ÇëÆôÓà "LogMemoryLeakDetailToFile" Ìõ¼þ±àÒ뿪¹ØÒԵõ½Ò»¸ö°üº¬¹ØÓÚÄÚ´æ鶵ÄÏêϸÐÅÏ¢µÄÈÕÖ¾Îļþ. ' {$endif} {$else} + 'ÒªµÃµ½Ò»¸ö°üº¬¹ØÓÚÄÚ´æ鶵ÄÏêϸÐÅÏ¢µÄÈÕÖ¾Îļþ, ÇëÆôÓà "FullDebugMode" ºÍ "LogMemoryLeakDetailToFile" Ìõ¼þ±àÒ뿪¹Ø. ' {$endif} + 'Òª½ûÖ¹ÄÚ´æй¶¼ì²é, Çë¹Ø±Õ "EnableMemoryLeakReporting" Ìõ¼þ±àÒ뿪¹Ø.'#13#10 {$endif} + #0; LeakMessageTitle = '¼ì²âµ½ÄÚ´æй¶'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM Òѱ»°²×°.'; FastMMInstallSharedMsg = 'Õý¹²ÓÃÒ»¸öÒÑ´æÔÚµÄ FastMM ʵÀý.'; FastMMUninstallMsg = 'FastMM Òѱ»Ð¶ÔØ.'; FastMMUninstallSharedMsg = 'ÒÑÍ£Ö¹¹²ÓÃÒ»¸öÒÑ´æÔÚµÄ FastMM ʵÀý.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'жÔØÖ®ºó·¢ÉúÁË MM ²Ù×÷.'; InvalidGetMemMsg = 'FastMM ¼ì²âµ½ÔÚ FastMM ±»Ð¶ÔØÖ®ºóµ÷ÓÃÁË GetMem.'; InvalidFreeMemMsg = 'FastMM ¼ì²âµ½ÔÚ FastMM ±»Ð¶ÔØÖ®ºóµ÷ÓÃÁË FreeMem.'; InvalidReallocMemMsg = 'FastMM ¼ì²âµ½ÔÚ FastMM ±»Ð¶ÔØÖ®ºóµ÷ÓÃÁË ReallocMem.'; InvalidAllocMemMsg = 'FastMM ¼ì²âµ½ÔÚ FastMM ±»Ð¶ÔØÖ®ºóµ÷ÓÃÁË AllocMem.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:21
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Translations/Afrikaans In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18275/Afrikaans Added Files: FastMM4Messages.pas Log Message: Aditional libraries need to compile Marathon --- NEW FILE: FastMM4Messages.pas --- { Fast Memory Manager: Messages Afrikaans translation by Pierre le Riche. } unit FastMM4Messages; interface {$Include FastMM4Options.inc} const {The name of the debug info support DLL} FullDebugModeLibraryName = 'FastMM_FullDebugMode.dll'; {Event log strings} LogFileExtension = '_MemoryManager_EventLog.txt'#0; CRLF = #13#10; EventSeparator = '--------------------------------'; {Class name messages} UnknownClassNameMsg = 'Onbekend'; {Stack trace Message} CurrentStackTraceMsg = #13#10#13#10'Die huidige stapel spoor wat aanleiding gegee het tot hierdie fout (terugkeer adresse): '; {Memory dump message} MemoryDumpMsg = #13#10#13#10'Huidige geheue inhoud: 256 grepe vanaf adres '; {Block Error Messages} BlockScanLogHeader = 'Geallokeerde blok gelys deur LogAllocatedBlocksToFile. The grootte is: '; ErrorMsgHeader = 'FastMM het ''n fout teegekom in die uitvoer van ''n '; GetMemMsg = 'GetMem'; FreeMemMsg = 'FreeMem'; ReallocMemMsg = 'ReallocMem'; BlockCheckMsg = 'ongebruikte blok toets'; OperationMsg = ' proses. '; BlockHeaderCorruptedMsg = 'Die merker voor die blok is beskadig. '; BlockFooterCorruptedMsg = 'Die merker na die blok is beskadig. '; FreeModifiedErrorMsg = 'FastMM het gevind dat ''n blok verander is sedert dit vrygestel is. '; DoubleFreeErrorMsg = '''n Poging is aangewend om ongebruikte ''blok vry te stel of te herallokeer.'; PreviousBlockSizeMsg = #13#10#13#10'Die vorige blok grootte was: '; CurrentBlockSizeMsg = #13#10#13#10'Die blok grootte is: '; StackTraceAtPrevAllocMsg = #13#10#13#10'Stapel spoor van toe die blok voorheen geallokeer is (terugkeer adresse):'; StackTraceAtAllocMsg = #13#10#13#10'Stapel spoor van toe die blok geallokeer is (terugkeer adresse):'; PreviousObjectClassMsg = #13#10#13#10'Die blok is voorheen gebruik vir ''n objek van die klas: '; CurrentObjectClassMsg = #13#10#13#10'Die blok word huidiglik gebruik vir ''n objek van die klas: '; PreviousAllocationGroupMsg = #13#10#13#10'Die allokasie groep was: '; PreviousAllocationNumberMsg = #13#10#13#10'Die allokasie nommer was: '; CurrentAllocationGroupMsg = #13#10#13#10'Die allokasie groep is: '; CurrentAllocationNumberMsg = #13#10#13#10'Die allokasie nommer is: '; StackTraceAtFreeMsg = #13#10#13#10'Stapel spoor van toe die blok voorheen vrygestel is (terugkeer adresse):'; BlockErrorMsgTitle = 'Geheue Fout'; {Virtual Method Called On Freed Object Errors} StandardVirtualMethodNames: array[1 + vmtParent div 4 .. -1] of PChar = ( 'SafeCallException', 'AfterConstruction', 'BeforeDestruction', 'Dispatch', 'DefaultHandler', 'NewInstance', 'FreeInstance', 'Destroy'); VirtualMethodErrorHeader = 'FastMM het ''n poging onderskep om ''n virtuele funksie of prosedure van ''n vrygestelde objek te roep. ''n Toegangsfout sal nou veroorsaak word om die proses te onderbreek.'; InterfaceErrorHeader = 'FastMM het ''n poging onderskep om ''n koppelvlak van ''n vrygestelde objek te gebruik. ''n Toegangsfout sal nou veroorsaak word om die proses te onderbreek.'; BlockHeaderCorruptedNoHistoryMsg = ' Ongelukkig is die merker voor die blok beskadig en dus is geen blok geskiedenis beskikbaar nie.'; FreedObjectClassMsg = #13#10#13#10'Vrygestelde objek klas: '; VirtualMethodName = #13#10#13#10'Virtuele funksie/prosedure: '; VirtualMethodOffset = 'VMT Adres +'; VirtualMethodAddress = #13#10#13#10'Virtuele funksie/prosedure address: '; StackTraceAtObjectAllocMsg = #13#10#13#10'Stapel spoor van toe die blok geallokeer is (terugkeer adresse):'; StackTraceAtObjectFreeMsg = #13#10#13#10'Stapel spoor van toe die blok vrygestel is (terugkeer adresse):'; {Installation Messages} AlreadyInstalledMsg = 'FastMM4 is alreeds geïnstalleer.'; AlreadyInstalledTitle = 'Alreeds geïnstalleer.'; OtherMMInstalledMsg = 'FastMM4 kan nie geïnstalleer word nie, want ''n ander ' + 'derde party geheuebestuurder is alreeds geïnstalleer.'#13#10'Indien jy FastMM4 wil gebruik, ' + 'verseker asb. dat FastMM4.pas die eerste leêr is in die "uses"' + #13#10'afdeling van jou projek se .dpr leêr.'; OtherMMInstalledTitle = 'FastMM4 kan nie geïnstalleer word nie - ''n ander geheue bestuurder is alreeds geïnstalleer'; MemoryAllocatedMsg = 'FastMM4 kan nie geïnstalleer word nie aangesien geheue reeds ' + 'geallokeer is deur die verstek geheue bestuurder.'#13#10'FastMM4.pas MOET ' + 'die eerste leêr wees in jou projek se .dpr leêr, andersins mag geheie geallokeer word' + ''#13#10'deur die verstek geheue bestuurder voordat FastMM4 ' + 'beheer verkry. '#13#10#13#10'As jy ''n foutvanger soos MadExcept gebruik ' + '(of enigiets wat die peuter met die inisialiseringsvolgorder van eenhede),' + #13#10' gaan in sy opstelling bladsy in en verseker dat FastMM4.pas eerste geïnisialiseer word.'; MemoryAllocatedTitle = 'FastMM4 kan nie geïnstalleer word nie - geheue is alreeds geallokeer'; {Leak checking messages} LeakLogHeader = '''n Geheue blok het gelek. Die grootte is: '; LeakMessageHeader = 'Hierdie program het geheue gelek. '; SmallLeakDetail = 'Die klein blok lekkasies is' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (verwagte lekkasies geregistreer deur wyser is uitgesluit)' {$endif} + ':'#13#10; LargeLeakDetail = 'Die groottes van medium en groot blok lekkasies is' {$ifdef HideExpectedLeaksRegisteredByPointer} + ' (verwagte lekkasies geregistreer deur wyser is uitgesluit)' {$endif} + ': '; BytesMessage = ' grepe: '; StringBlockMessage = 'String'; LeakMessageFooter = #13#10 {$ifndef HideMemoryLeakHintMessage} + #13#10'Nota: ' {$ifdef RequireIDEPresenceForLeakReporting} + 'Die geheie lekkasie toets word slegs gedoen indien Delphi op daardie tydstip op die masjien loop. ' {$endif} {$ifdef FullDebugMode} {$ifdef LogMemoryLeakDetailToFile} + 'Lekkasie detail word gelog na ''n teks leêr in dieselfde gids as hierdie program. ' {$else} + 'Sit "LogMemoryLeakDetailToFile" aan om ''n gedetailleerde verslag oor al die geheue lekkasies na teksleêr te skryf. ' {$endif} {$else} + 'Sit die "FullDebugMode" en "LogMemoryLeakDetailToFile" opsies aan om ''n gedetailleerde verslag oor al die geheue lekkasies na teksleêr te skryf. ' {$endif} + 'Om die lekkasie toets te deaktiveer, sit die "EnableMemoryLeakReporting" opsie af.'#13#10 {$endif} + #0; LeakMessageTitle = 'Geheue Lekkasie'; {$ifdef UseOutputDebugString} FastMMInstallMsg = 'FastMM has been installed.'; FastMMInstallSharedMsg = 'Sharing an existing instance of FastMM.'; FastMMUninstallMsg = 'FastMM has been uninstalled.'; FastMMUninstallSharedMsg = 'Stopped sharing an existing instance of FastMM.'; {$endif} {$ifdef DetectMMOperationsAfterUninstall} InvalidOperationTitle = 'MM Operation after uninstall.'; InvalidGetMemMsg = 'FastMM has detected a GetMem call after FastMM was uninstalled.'; InvalidFreeMemMsg = 'FastMM has detected a FreeMem call after FastMM was uninstalled.'; InvalidReallocMemMsg = 'FastMM has detected a ReallocMem call after FastMM was uninstalled.'; InvalidAllocMemMsg = 'FastMM has detected an AllocMem call after FastMM was uninstalled.'; {$endif} implementation end. |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:11
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Replacement BorlndMM DLL/Precompiled/for Delphi IDE/Performance In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18190/Performance Added Files: BorlndMM.dll Log Message: Aditional libraries need to compile Marathon --- NEW FILE: BorlndMM.dll --- (This appears to be a binary file; contents omitted.) |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:34:10
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Replacement BorlndMM DLL/Precompiled/for Delphi IDE/Debug In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18190/Debug Added Files: BorlndMM.dll Log Message: Aditional libraries need to compile Marathon --- NEW FILE: BorlndMM.dll --- (This appears to be a binary file; contents omitted.) |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:33:15
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Replacement BorlndMM DLL/Precompiled/for Applications/Performance In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv17713/Performance Added Files: BorlndMM.dll Log Message: Aditional libraries need to compile Marathon --- NEW FILE: BorlndMM.dll --- (This appears to be a binary file; contents omitted.) |
From: Ryan J. M. <rj...@us...> - 2007-02-10 22:33:13
|
Update of /cvsroot/gmarathon/gmarathon/src/FastMM4/474/Replacement BorlndMM DLL/Precompiled/for Applications/Debug In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv17713/Debug Added Files: BorlndMM.dll Log Message: Aditional libraries need to compile Marathon --- NEW FILE: BorlndMM.dll --- (This appears to be a binary file; contents omitted.) |