[prev in list] [next in list] [prev in thread] [next in thread]
List: xaudio-sdk
Subject: Re: [xaudio-sdk] messages
From: Mark Chambers <mark.chambers () objectmastery ! com>
Date: 2001-05-29 0:32:45
[Download RAW message or body]
Michael Schlagmueller wrote:
> Hi ! Does anyone know how to communticate between two different
> (self-written) applications ? I guess I have to use windows messages
> (OS: WIN98) but I don't know how to do it.The easiest example: the
> first program has a button und when I press this button a function in
> the 2nd program will be executed.Does anyone know how to handle that ?
> (i'm using Delphi 4 but i can also code C++) Greetz Michael
This is off topic but a very useful technique and short enough to post.
Sorry to anyone who is not interested.
You could use a windows message and an atom. The following example
allows a client to send a filename and line number to a delphi
designtime package to open the specified file at the specified line. We
use it to allow our test harness to interact with delphi. It should
give you a good example of how to pass limited information from one app
to another.
p.s. there is some debugging code in here - you should be able to just
delete any showmessages.
This is the sender unit
unit FTest;
interface
uses
Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
omIDEControllerClients
;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowFileLine(Edit1.Text, StrToInt(Edit2.Text));
end;
end.
This is the 'sender' helper unit
unit omIDEControllerClients;
interface
procedure ShowFileLine(FileName: string; LineNum: Integer);
implementation
uses
SysUtils
, Windows
, Messages
;
procedure ShowFileLine(FileName: string; LineNum: Integer);
var
WmX: Word;
Buffer: array[0..255] of char;
Atom: TAtom;
Str: string;
begin
Wmx:= RegisterWindowMessage('omIDEController');
Str:= FileName + '@' + IntToStr(LineNum);
Atom:= GlobalAddAtom(StrPCopy(Buffer, Str));
SendMessage(HWND_Broadcast, WmX, 0, Atom);
GlobalDeleteAtom(Atom);
end;
and this is the receiver (which we build into a package, but that you
can put into one of the forms in your receiving application).
unit omIDEControllers;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, ComCtrls{, ToolWin, ImgList};
type
TFormIDEController = class(TForm)
public
procedure DefaultHandler(var Message); override;
end;
var
FormIDEController: TFormIDEController = nil;
implementation
{$R *.DFM}
uses
ExptIntf
, EditIntf
, ToolIntf
, ToolsAPI
, IniFiles
, omURLs
, omStrUtils
, omMathUtils
;
procedure ShowMessage(Str: string);
begin
// Dialogs.ShowMessage(Str);
end;
procedure TFormIDEController.DefaultHandler(var Message);
var
Buffer: array[0..255] of char;
WmX: Word;
Str: string;
TargetFileName: string;
LineStr: string;
LineNum: Integer;
Index: Integer;
ProjectDof: TIniFile;
FileName: TomFilename;
FModIntf: TIModuleInterface;
FEditIntf: TIEditorInterface;
EditView: TIEditView;
EditPos: TEditPos;
Exename: string;
UnitName: string;
ProjectDir: string;
SearchPath: string;
TempPath: string;
Found: Boolean;
begin
inherited DefaultHandler(Message);
Wmx:= RegisterWindowMessage('omIDEController');
with TMessage(Message) do begin
if Msg = WmX then begin
if GlobalGetAtomName(lParam, Buffer, 255) <> 0 then begin
SetForegroundWindow(Application.Handle);
Str:= StrPas(Buffer);
Index:= Pos('@', Str);
TargetFileName:= Copy(Str, 1, Index-1);
LineStr:= Copy(Str, Index+1, Maxint);
LineNum:= StrToInt(LineStr);
ShowMessage('TargetFileName = ' + TargetFileName);
ProjectDir := ExtractFileDir(ToolServices.GetProjectName);
ShowMessage('ProjectName = ' + ToolServices.GetProjectName);
Found:= False;
FileName:= TomFilename.Create;
try
// make full filename if TargetFilename is relative
if (ExtractFilename(TargetFileName) <> TargetFileName) then
begin
ChDir(ProjectDir);
TargetFileName := ExpandFilename(TargetFileName);
if (not FileExists(TargetFileName)) then begin
Dialogs.ShowMessage('File "' + TargetFilename + '" not
found.');
exit;
end
else begin
Found:= true;
Filename.Full:= TargetFileName;
end
end;
// see if the file is mentioned in the project
if not Found then begin
for Index:= 0 to ToolServices.GetUnitCount - 1 do begin
UnitName:= ToolServices.GetUnitName(Index);
FileName.Full:= UnitName;
ShowMessage(
'Unit[' + IntToStr(Index) + ']:' + UnitName +
#13 +
'Partial: "' + Filename.Partial + '"' +
#13 +
'TargetFileName: "' + TargetFileName + '"'
);
if SameText(FileName.Partial, TargetFileName) then begin
Found:= True;
break;
end;
end;
end;
// see if we can find it on the path
if not Found then begin
ExeName:= ParamStr(0);
Index:= Pos('Delphi5', ExeName);
Delete(ExeName, Index+7, MaxInt);
ShowMessage('$(Delphi)=' + ExeName);
FileName.Full:= ToolServices.GetProjectName;
FileName.Extension:= 'dof';
ProjectDof:= TInifile.Create(FileName.Full);
try
SearchPath:= ProjectDof.ReadString('Directories',
'SearchPath', '');
SubstituteText('$(Delphi)', ExeName, SearchPath, true);
ShowMessage('SearchPath = ' + SearchPath);
TempPath:= FileSearch(TargetFileName, SearchPath);
ShowMessage('FileSearch: for "' + TargetFileName + ' -> "'
+ TempPath + '"');
Found:= TempPath <> '';
Filename.Full:= TempPath;
finally
FreeAndNil(ProjectDof);
end;
end;
if not found then begin
Dialogs.ShowMessage('File "' + TargetFilename + '" not
found.');
exit;
end;
ShowMessage('Opening...' + FileName.Full);
Toolservices.OpenFile(FileName.Full);
FModIntf := ToolServices.GetModuleInterface(FileName.Full);
try
if not Assigned(FModIntf) then begin
Exit;
end;
FModIntf.ShowSource;
FEditIntf := FModIntf.GetEditorInterface;
if not Assigned(FEditIntf) then begin
Exit;
end;
EditView := FEditIntf.GetView(0);
if not Assigned(EditView) then begin
Exit;
end;
EditPos.Col := 1;
EditPos.Line := Max(1, LineNum - 10);
EditView.TopPos := EditPos;
EditPos.Col := 1;
EditPos.Line := LineNum;
EditView.CursorPos := EditPos;
FModIntf.ShowSource;
finally
FModIntf.Free;
end;
finally
FreeAndNil(FileName);
end;
end;
end;
end;
end;
initialization
if (BorlandIDEServices <> nil) then begin
FormIDEController := TFormIDEController.Create(nil);
end;
finalization
if FormIDEController <> nil then begin
FormIDEController.Free;
end;
end.
[Attachment #3 (text/html)]
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body bgcolor="#FFFFFF">
<p>Michael Schlagmueller wrote:
<blockquote TYPE=CITE><style></style>
<font face="Arial"><font size=-1>Hi
!</font></font> <font face="Arial"><font size=-1>Does anyone know
how to communticate between two different (self-written) applications ?
I guess I have to use windows messages (OS: WIN98) but I don't know how
to do it.</font></font><font face="Arial"><font size=-1>The easiest example:
the first program has a button und when I press this button a function
in the 2nd program will be executed.</font></font><font face="Arial"><font \
size=-1>Does anyone know how to handle that ? (i'm using Delphi 4 but i can also code
C++)</font></font> <font face="Arial"><font size=-1>Greetz</font></font><font \
face="Arial"><font size=-1> Michael</font></font></blockquote>
<p><br>This is off topic but a very useful technique and short enough to
post. Sorry to anyone who is not interested.
<p>You could use a windows message and an atom. The following example
allows a client to send a filename and line number to a delphi designtime
package to open the specified file at the specified line. We use
it to allow our test harness to interact with delphi. It should give
you a good example of how to pass limited information from one app to another.
<br>
<p>p.s. there is some debugging code in here - you should be able to just
delete any showmessages.
<br>
<p>This is the sender unit
<p><tt><font color="#3333FF">unit FTest;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">interface</font></tt><tt><font color="#3333FF"></font></tt> \
<p><tt><font color="#3333FF">uses</font></tt> <br><tt><font color="#3333FF"> \
Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,</font></tt>
<br><tt><font color="#3333FF"> StdCtrls;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">type</font></tt>
<br><tt><font color="#3333FF"> TForm1 = class(TForm)</font></tt>
<br><tt><font color="#3333FF"> Button1: TButton;</font></tt>
<br><tt><font color="#3333FF"> Edit1: TEdit;</font></tt>
<br><tt><font color="#3333FF"> Label1: TLabel;</font></tt>
<br><tt><font color="#3333FF"> Edit2: TEdit;</font></tt>
<br><tt><font color="#3333FF"> procedure Button1Click(Sender:
TObject);</font></tt>
<br><tt><font color="#3333FF"> private</font></tt>
<br><tt><font color="#3333FF"> { Private declarations
}</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF"> public</font></tt>
<br><tt><font color="#3333FF"> { Public declarations
}</font></tt>
<br><tt><font color="#3333FF"> end;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">var</font></tt>
<br><tt><font color="#3333FF"> Form1: TForm1;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">implementation</font></tt><tt><font color="#3333FF"></font></tt> \
<p><tt><font color="#3333FF">{$R *.DFM}</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">uses</font></tt>
<br><tt><font color="#3333FF"> omIDEControllerClients</font></tt>
<br><tt><font color="#3333FF"> </font></tt>
<br><tt><font color="#3333FF"> ;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">procedure \
TForm1.Button1Click(Sender: TObject);</font></tt> <br><tt><font \
color="#3333FF">begin</font></tt> <br><tt><font color="#3333FF"> \
ShowFileLine(Edit1.Text, StrToInt(Edit2.Text));</font></tt> <br><tt><font \
color="#3333FF">end;</font></tt><tt><font color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">end.</font></tt> <br><tt><font \
color="#3333FF"></font></tt> <tt><font color="#3333FF"></font></tt> <p>This is \
the 'sender' helper unit <br> <font color="#3333FF"></font>
<p><tt><font color="#3333FF">unit omIDEControllerClients;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">interface</font></tt><tt><font color="#3333FF"></font></tt> \
<p><tt><font color="#3333FF">procedure ShowFileLine(FileName: string; LineNum: \
Integer);</font></tt><tt><font color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">implementation</font></tt><tt><font color="#3333FF"></font></tt> \
<p><tt><font color="#3333FF">uses</font></tt> <br><tt><font \
color="#3333FF"> SysUtils</font></tt> <br><tt><font \
color="#3333FF"> , Windows</font></tt> <br><tt><font color="#3333FF"> , \
Messages</font></tt> <br><tt><font color="#3333FF"> ;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">procedure \
ShowFileLine(FileName: string; LineNum: Integer);</font></tt>
<br><tt><font color="#3333FF">var</font></tt>
<br><tt><font color="#3333FF"> WmX: Word;</font></tt>
<br><tt><font color="#3333FF"> Buffer: array[0..255] of char;</font></tt>
<br><tt><font color="#3333FF"> Atom: TAtom;</font></tt>
<br><tt><font color="#3333FF"> Str: string;</font></tt>
<br><tt><font color="#3333FF">begin</font></tt>
<br><tt><font color="#3333FF"> Wmx:= \
RegisterWindowMessage('omIDEController');</font></tt> <br><tt><font \
color="#3333FF"> Str:= FileName + '@' + IntToStr(LineNum);</font></tt> \
<br><tt><font color="#3333FF"> Atom:= GlobalAddAtom(StrPCopy(Buffer, \
Str));</font></tt><tt><font color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF"> SendMessage(HWND_Broadcast, WmX, 0, Atom);</font></tt>
<br><tt><font color="#3333FF"> GlobalDeleteAtom(Atom);</font></tt>
<br><tt><font color="#3333FF">end;</font></tt>
<p>and this is the receiver (which we build into a package, but that you
can put into one of the forms in your receiving application).
<p><tt><font color="#3333FF">unit omIDEControllers;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">interface</font></tt>
<br><tt><font color="#3333FF">uses</font></tt>
<br><tt><font color="#3333FF"> Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,</font></tt>
<br><tt><font color="#3333FF"> StdCtrls, ComCtrls{, ToolWin, \
ImgList};</font></tt> <br><tt><font color="#3333FF"></font></tt> <tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">type</font></tt>
<br><tt><font color="#3333FF"> TFormIDEController = class(TForm)</font></tt>
<br><tt><font color="#3333FF"> public</font></tt>
<br><tt><font color="#3333FF"> procedure DefaultHandler(var
Message); override;</font></tt>
<br><tt><font color="#3333FF"> end;</font></tt>
<br><tt><font color="#3333FF"></font></tt> <tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">var</font></tt>
<br><tt><font color="#3333FF"> FormIDEController: TFormIDEController
= nil;</font></tt>
<br><tt><font color="#3333FF"></font></tt> <tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">implementation</font></tt>
<br><tt><font color="#3333FF">{$R *.DFM}</font></tt>
<br><tt><font color="#3333FF">uses</font></tt>
<br><tt><font color="#3333FF"> ExptIntf</font></tt>
<br><tt><font color="#3333FF"> , EditIntf</font></tt>
<br><tt><font color="#3333FF"> , ToolIntf</font></tt>
<br><tt><font color="#3333FF"> , ToolsAPI</font></tt>
<br><tt><font color="#3333FF"> , IniFiles</font></tt>
<br><tt><font color="#3333FF"> , omURLs</font></tt>
<br><tt><font color="#3333FF"> , omStrUtils</font></tt>
<br><tt><font color="#3333FF"> , omMathUtils</font></tt>
<br><tt><font color="#3333FF"> ;</font></tt>
<br><tt><font color="#3333FF"></font></tt> <tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">procedure ShowMessage(Str: \
string);</font></tt> <br><tt><font color="#3333FF">begin</font></tt>
<br><tt><font color="#3333FF">// Dialogs.ShowMessage(Str);</font></tt>
<br><tt><font color="#3333FF">end;</font></tt>
<br><tt><font color="#3333FF"></font></tt> <tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">procedure \
TFormIDEController.DefaultHandler(var Message);</font></tt>
<br><tt><font color="#3333FF">var</font></tt>
<br><tt><font color="#3333FF"> Buffer: array[0..255] of char;</font></tt>
<br><tt><font color="#3333FF"> WmX: Word;</font></tt>
<br><tt><font color="#3333FF"> Str: string;</font></tt>
<br><tt><font color="#3333FF"> TargetFileName: string;</font></tt>
<br><tt><font color="#3333FF"> LineStr: string;</font></tt>
<br><tt><font color="#3333FF"> LineNum: Integer;</font></tt>
<br><tt><font color="#3333FF"> Index: Integer;</font></tt>
<br><tt><font color="#3333FF"> ProjectDof: TIniFile;</font></tt>
<br><tt><font color="#3333FF"> FileName: TomFilename;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF"> FModIntf: \
TIModuleInterface;</font></tt> <br><tt><font color="#3333FF"> FEditIntf: \
TIEditorInterface;</font></tt> <br><tt><font color="#3333FF"> EditView: \
TIEditView;</font></tt> <br><tt><font color="#3333FF"> EditPos: \
TEditPos;</font></tt> <br><tt><font color="#3333FF"> Exename: \
string;</font></tt> <br><tt><font color="#3333FF"> UnitName: \
string;</font></tt> <br><tt><font color="#3333FF"> ProjectDir: \
string;</font></tt> <br><tt><font color="#3333FF"> SearchPath: \
string;</font></tt> <br><tt><font color="#3333FF"> TempPath: \
string;</font></tt><tt><font color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF"> Found: Boolean;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">begin</font></tt>
<br><tt><font color="#3333FF"> inherited \
DefaultHandler(Message);</font></tt><tt><font color="#3333FF"></font></tt> \
<p><tt><font color="#3333FF"> Wmx:= \
RegisterWindowMessage('omIDEController');</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF"> with \
TMessage(Message) do begin</font></tt> <br><tt><font \
color="#3333FF"> if Msg = WmX then begin</font></tt> <br><tt><font \
color="#3333FF"> if GlobalGetAtomName(lParam, Buffer, \
255) <> 0 then begin</font></tt> <br><tt><font \
color="#3333FF"> \
SetForegroundWindow(Application.Handle);</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF"> Str:= \
StrPas(Buffer);</font></tt> <br><tt><font \
color="#3333FF"> Index:= Pos('@', \
Str);</font></tt> <br><tt><font \
color="#3333FF"> TargetFileName:= Copy(Str, \
1, Index-1);</font></tt> <br><tt><font \
color="#3333FF"> LineStr:= Copy(Str, \
Index+1, Maxint);</font></tt> <br><tt><font \
color="#3333FF"> LineNum:= \
StrToInt(LineStr);</font></tt> <br><tt><font \
color="#3333FF"> \
ShowMessage('TargetFileName = ' + TargetFileName);</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF"> ProjectDir := \
ExtractFileDir(ToolServices.GetProjectName);</font></tt> <br><tt><font \
color="#3333FF"> ShowMessage('ProjectName = \
' + ToolServices.GetProjectName);</font></tt><tt><font color="#3333FF"></font></tt> \
<p><tt><font color="#3333FF"> Found:= \
False;</font></tt> <br><tt><font \
color="#3333FF"> FileName:= \
TomFilename.Create;</font></tt> <br><tt><font \
color="#3333FF"> try</font></tt>
<br><tt><font color="#3333FF">
// make full filename if TargetFilename is relative</font></tt>
<br><tt><font color="#3333FF">
if (ExtractFilename(TargetFileName) <> TargetFileName) then begin</font></tt>
<br><tt><font color="#3333FF">
ChDir(ProjectDir);</font></tt>
<br><tt><font color="#3333FF">
TargetFileName := ExpandFilename(TargetFileName);</font></tt>
<br><tt><font color="#3333FF">
if (not FileExists(TargetFileName)) then begin</font></tt>
<br><tt><font color="#3333FF">
Dialogs.ShowMessage('File "' + TargetFilename + '" not found.');</font></tt>
<br><tt><font color="#3333FF">
exit;</font></tt>
<br><tt><font color="#3333FF">
end</font></tt>
<br><tt><font color="#3333FF">
else begin</font></tt>
<br><tt><font color="#3333FF">
Found:= true;</font></tt>
<br><tt><font color="#3333FF">
Filename.Full:= TargetFileName;</font></tt>
<br><tt><font color="#3333FF">
end</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
// see if the file is mentioned in the project</font></tt>
<br><tt><font color="#3333FF">
if not Found then begin</font></tt>
<br><tt><font color="#3333FF">
for Index:= 0 to ToolServices.GetUnitCount - 1 do begin</font></tt>
<br><tt><font color="#3333FF">
UnitName:= ToolServices.GetUnitName(Index);</font></tt>
<br><tt><font color="#3333FF">
FileName.Full:= UnitName;</font></tt>
<br><tt><font color="#3333FF">
ShowMessage(</font></tt>
<br><tt><font color="#3333FF">
'Unit[' + IntToStr(Index) + ']:' + UnitName +</font></tt>
<br><tt><font color="#3333FF">
#13 +</font></tt>
<br><tt><font color="#3333FF">
'Partial: "' + Filename.Partial + '"' +</font></tt>
<br><tt><font color="#3333FF">
#13 +</font></tt>
<br><tt><font color="#3333FF">
'TargetFileName: "' + TargetFileName + '"'</font></tt>
<br><tt><font color="#3333FF">
);</font></tt>
<br><tt><font color="#3333FF">
if SameText(FileName.Partial, TargetFileName) then begin</font></tt>
<br><tt><font color="#3333FF">
Found:= True;</font></tt>
<br><tt><font color="#3333FF">
break;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
// see if we can find it on the path</font></tt>
<br><tt><font color="#3333FF">
if not Found then begin</font></tt>
<br><tt><font color="#3333FF">
ExeName:= ParamStr(0);</font></tt>
<br><tt><font color="#3333FF">
Index:= Pos('Delphi5', ExeName);</font></tt>
<br><tt><font color="#3333FF">
Delete(ExeName, Index+7, MaxInt);</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
ShowMessage('$(Delphi)=' + ExeName);</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF"> \
FileName.Full:= ToolServices.GetProjectName;</font></tt> <br><tt><font \
color="#3333FF"> \
FileName.Extension:= 'dof';</font></tt> <br><tt><font \
color="#3333FF"> \
ProjectDof:= TInifile.Create(FileName.Full);</font></tt> <br><tt><font \
color="#3333FF"> \
try</font></tt> <br><tt><font \
color="#3333FF">
SearchPath:= ProjectDof.ReadString('Directories', 'SearchPath', \
'');</font></tt><tt><font color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">
SubstituteText('$(Delphi)', ExeName, SearchPath, true);</font></tt>
<br><tt><font color="#3333FF">
ShowMessage('SearchPath = ' + SearchPath);</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">
TempPath:= FileSearch(TargetFileName, SearchPath);</font></tt>
<br><tt><font color="#3333FF">
ShowMessage('FileSearch: for "' + TargetFileName + ' -> "' + TempPath +
'"');</font></tt>
<br><tt><font color="#3333FF">
Found:= TempPath <> '';</font></tt>
<br><tt><font color="#3333FF">
Filename.Full:= TempPath;</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
finally</font></tt>
<br><tt><font color="#3333FF">
FreeAndNil(ProjectDof);</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
if not found then begin</font></tt>
<br><tt><font color="#3333FF">
Dialogs.ShowMessage('File "' + TargetFilename + '" not found.');</font></tt>
<br><tt><font color="#3333FF">
exit;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
ShowMessage('Opening...' + FileName.Full);</font></tt>
<br><tt><font color="#3333FF">
Toolservices.OpenFile(FileName.Full);</font></tt>
<br><tt><font color="#3333FF">
FModIntf := ToolServices.GetModuleInterface(FileName.Full);</font></tt>
<br><tt><font color="#3333FF">
try</font></tt>
<br><tt><font color="#3333FF">
if not Assigned(FModIntf) then begin</font></tt>
<br><tt><font color="#3333FF">
Exit;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt>
<br><tt><font color="#3333FF">
FModIntf.ShowSource;</font></tt>
<br><tt><font color="#3333FF">
FEditIntf := FModIntf.GetEditorInterface;</font></tt>
<br><tt><font color="#3333FF">
if not Assigned(FEditIntf) then begin</font></tt>
<br><tt><font color="#3333FF">
Exit;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt>
<br><tt><font color="#3333FF">
EditView := FEditIntf.GetView(0);</font></tt>
<br><tt><font color="#3333FF">
if not Assigned(EditView) then begin</font></tt>
<br><tt><font color="#3333FF">
Exit;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt>
<br><tt><font color="#3333FF">
EditPos.Col := 1;</font></tt>
<br><tt><font color="#3333FF">
EditPos.Line := Max(1, LineNum - 10);</font></tt>
<br><tt><font color="#3333FF">
EditView.TopPos := EditPos;</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
EditPos.Col := 1;</font></tt>
<br><tt><font color="#3333FF">
EditPos.Line := LineNum;</font></tt>
<br><tt><font color="#3333FF">
EditView.CursorPos := EditPos;</font></tt>
<br><tt><font color="#3333FF">
FModIntf.ShowSource;</font></tt>
<br><tt><font color="#3333FF">
finally</font></tt>
<br><tt><font color="#3333FF">
FModIntf.Free;</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt><tt><font color="#3333FF"></font></tt>
<p><tt><font color="#3333FF">
finally</font></tt>
<br><tt><font color="#3333FF">
FreeAndNil(FileName);</font></tt>
<br><tt><font color="#3333FF">
end;</font></tt>
<br><tt><font color="#3333FF"> end;</font></tt>
<br><tt><font color="#3333FF"> end;</font></tt>
<br><tt><font color="#3333FF"> end;</font></tt>
<br><tt><font color="#3333FF">end;</font></tt>
<br><tt><font color="#3333FF"></font></tt> <tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">initialization</font></tt>
<br><tt><font color="#3333FF"> if (BorlandIDEServices <> nil)
then begin</font></tt>
<br><tt><font color="#3333FF"> FormIDEController := \
TFormIDEController.Create(nil);</font></tt> <br><tt><font color="#3333FF"> \
end;</font></tt><tt><font color="#3333FF"></font></tt> <p><tt><font \
color="#3333FF">finalization</font></tt> <br><tt><font color="#3333FF"> if \
FormIDEController <> nil then begin</font></tt>
<br><tt><font color="#3333FF"> FormIDEController.Free;</font></tt>
<br><tt><font color="#3333FF"> end;</font></tt><tt><font \
color="#3333FF"></font></tt> <p><tt><font color="#3333FF">end.</font></tt>
</body>
</html>
_______________________________________________
xaudio-sdk mailing list
xaudio-sdk@mpegtv.com
http://mailman.bok.net/mailman/listinfo/xaudio-sdk
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic