212 lines
7.1 KiB
ObjectPascal
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.
|