Componentes.Terceros.jcl/official/1.96/experts/debug/tools/MapToJdbgMain.pas

212 lines
7.1 KiB
ObjectPascal

{**************************************************************************************************}
{ }
{ Project JEDI Code Library (JCL) }
{ }
{ 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 MapToJdbgMain.pas. }
{ }
{ The Initial Developer of the Original Code is Petr Vones. }
{ Portions created by Petr Vones are Copyright (C) of Petr Vones. }
{ }
{**************************************************************************************************}
{ }
{ Unit owner: Petr Vones }
{ Last modified: $Date: 2005/10/26 03:29:44 $ }
{ }
{**************************************************************************************************}
unit MapToJdbgMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ImgList, ActnList, Menus, ToolWin;
type
TMainForm = class(TForm)
ToolBar1: TToolBar;
MainMenu1: TMainMenu;
ActionList1: TActionList;
ImageList1: TImageList;
StatusBar1: TStatusBar;
Exit1: TAction;
Open1: TAction;
Convert1: TAction;
File1: TMenuItem;
Open2: TMenuItem;
N1: TMenuItem;
Exit2: TMenuItem;
OpenDialog1: TOpenDialog;
FilesListView: TListView;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
Run1: TMenuItem;
Convert2: TMenuItem;
procedure Exit1Execute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Open1Execute(Sender: TObject);
procedure Convert1Execute(Sender: TObject);
procedure Convert1Update(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
uses
JclCounter, JclDebug, JclFileUtils, JclUnitConv;
resourcestring
RsConverting = 'Converting ...';
RsConversionStatus = '%d file(s) converted, Conversion time: %5.3f sec.';
RsLinkerBugs = 'Linker bugs: %d';
procedure TMainForm.FormCreate(Sender: TObject);
var
MapFileName: TFileName;
begin
MapFileName := ParamStr(1);
if MapFileName <> '' then
begin
ConvertMapFileToJdbgFile(MapFileName);
Application.ShowMainForm := False;
Application.Terminate;
end;
end;
procedure TMainForm.Exit1Execute(Sender: TObject);
begin
Close;
end;
procedure TMainForm.Open1Execute(Sender: TObject);
var
I, FileSize: Integer;
begin
with OpenDialog1 do
begin
FileName := '';
if Execute then
begin
with FilesListView.Items do
begin
BeginUpdate;
try
Clear;
for I := 0 to Files.Count - 1 do
with Add do
begin
Caption := PathExtractFileNameNoExt(Files[I]);
FileSize := FileGetSize(Files[I]);
SubItems.AddObject(IntToStr(FileSize), Pointer(FileSize));
SubItems.Add('');
SubItems.Add('');
SubItems.Add(Files[I]);
SubItems.Add('');
SubItems.Add('');
ImageIndex := 1;
end;
finally
EndUpdate;
end;
end;
StatusBar1.Panels[0].Text := '';
end;
end;
end;
procedure TMainForm.Convert1Execute(Sender: TObject);
var
I, JdbgFileSize, FilesConverted, LineNumberErrors, LinkerBugCnt: Integer;
MapFileName, JdbgFileName: TFileName;
Ratio: Extended;
LinkerBugUnit: string;
Cnt: TJclCounter;
begin
Screen.Cursor := crHourGlass;
try
with FilesListView do
begin
StatusBar1.Panels[0].Text := RsConverting;
StatusBar1.Panels[1].Text := '';
StatusBar1.Update;
Items.BeginUpdate;
for I := 0 to Items.Count - 1 do
with Items[I] do
begin
SubItems[1] := '';
SubItems[2] := '';
SubItems[4] := '';
SubItems[5] := '';
ImageIndex := 1;
end;
Items.EndUpdate;
Update;
FilesConverted := 0;
LinkerBugCnt := 0;
StartCount(Cnt);
for I := 0 to Items.Count - 1 do
begin
with Items[I] do
begin
MapFileName := SubItems[3];
JdbgFileName := ChangeFileExt(MapFileName, JclDbgFileExtension);
if ConvertMapFileToJdbgFile(MapFileName, LinkerBugUnit, LineNumberErrors) then
begin
ImageIndex := 3;
JdbgFileSize := FileGetSize(JdbgFileName);
Ratio := JdbgFileSize * 100 / Integer(SubItems.Objects[0]);
SubItems[1] := IntToStr(JdbgFileSize);
SubItems[2] := Format('%3.1f %%', [Ratio]);
SubItems[4] := LinkerBugUnit;
if LinkerBugUnit <> '' then
Inc(LinkerBugCnt);
if LineNumberErrors > 0 then
SubItems[5] := IntToStr(LineNumberErrors);
Inc(FilesConverted);
end
else
begin
SubItems[0] := '';
ImageIndex := 4;
end;
end;
Update;
end;
StatusBar1.Panels[0].Text := Format(RsConversionStatus, [FilesConverted, StopCount(Cnt)]);
StatusBar1.Panels[1].Text := Format(RsLinkerBugs, [LinkerBugCnt]);
end;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TMainForm.Convert1Update(Sender: TObject);
begin
Convert1.Enabled := FilesListView.Items.Count > 0;
end;
// History:
// $Log: MapToJdbgMain.pas,v $
// Revision 1.2 2005/10/26 03:29:44 rrossmair
// - improved header information, added Date and Log CVS tags.
//
end.