# IpcName = IpcName = Global\FIREBIRDIpcName = Global\FirebirdIPI元ねたはキムラデービーブログ | [IBDeveloper] FirebirdはWindows Vistaの上で動作しますか?、設定ファイル(aliases.conf/firebird.conf)のリファレンス - Firebird Wiki、Does Firebird work on Windows Vista or Windows 7?あたり。
とりあえず Embarcadero RAD Studio/Delphi/C++Builder 関係のあれやこれや。 Prism.jsによるコードのハイライトのテスト中。
# IpcName = IpcName = Global\FIREBIRDIpcName = Global\FirebirdIPIThis fix has not been tested at all, and it is not supported in any way by Embarcadero. If it works for you, great… if not, you’ve been warned.(超訳:この修正は完全にテストされてはおらず、エンバカデロによりサポートされません。あなたの環境で動作すれば素晴らしい…んですが、もし駄目だったとしても、警告しましたよ)だそうです。
Sorry Delphi 5 users, but I can’t support you anymoreとのこと)。
we are working on a fix that will cover everyoneだそうです。
program Project2;
uses
Windows,
SysUtils,
Messages,
Forms,
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
const
{ Atom name }
CAtomName: String = '{7B0C8E12-F168-4DA4-89C9-E4C86BE404FE}';
var
AppAtom: ATOM;
Wnd: HWnd;
AppWnd: HWnd;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
if GlobalFindAtom(PChar(CAtomName)) <> 0 then
begin
{ Search main form }
Wnd := FindWindow(PChar('TForm2'),nil); // Class name of the main form
if Wnd = 0 then
begin
Exit;
end;
{ Bring foreground and activate }
SetForegroundWindow(Wnd);
{ Get window handle of TApplication }
AppWnd := GetWindowLong(Wnd,GWL_HWNDPARENT);
if AppWnd <> 0 then
begin
Wnd := AppWnd;
end;
{ Restore if iconized }
if IsIconic(Wnd) then
begin
SendMessage(Wnd,WM_SYSCOMMAND,SC_RESTORE,-1);
end;
Exit;
end;
AppAtom := GlobalAddAtom(PChar(CAtomName));
try
Application.CreateForm(TForm2, Form2);
Application.Run;
finally
GlobalDeleteAtom(AppAtom);
end;
end.
として一つ目のインスタンスを実行し、強制的に終了してから二つ目のインスタンスを実行してみましたが、GlobalFindAtom(ja)で有効なglobal atomが取得できてしまい、ログオフ/再起動を行うまでプログラムは有効に起動できません。ということでアプリケーションの多重実行を禁止するのにglobal atomを使用するのは不適切である(global atomの用途として適切ではない)、という結論に達しました。But I should note that this isn’t an "officially sponsored" Embarcadero deal. This is at best "semi-official".)ことになったそうです(オープンソース化された経緯については旧Delphi-MLの73894以下のスレッドが参考になります)。現在TurboPowerプロジェクトには以下のプロジェクトが存在しています。
procedure TDataModule1.IdFTP1DataChannelCreate(ASender: TObject;
ADataChannel: TIdTCPConnection);
begin
if (ASender <> nil) and (ASender is TIdFTP) then
begin
if (TIdFTP(ASender).Passive = True) and
(ADataChannel <> nil) and (ADataChannel is TIdTCPClientCustom) then
begin
TIdTCPClientCustom(ADataChannel).ReadTimeout := TIdFTP(ASender).TransferTimeout;
end;
end;
end;
PROFESSIONAL エディションおよび PROFESSIONAL ACADEMIC エディションの DB Express 配備制限に適用される追加条項の影響によりProfessional SKUでdbExpress経由のリモートデータベースアプリケーションが作れなくなったこともあり、導入は見合わせとはいわないまでも微妙です。本格導入は遠のいたかも…。
私たちは、皆さんがこのウイルスに感染しているかどうかを調べる方法、そして、感染していた場合の推奨される対応方法についてまとめる作業を進めています。この推奨されるステップでは、皆さんが再感染しないようにガードされるように作業しています。
we decided to take a different approach to the Touch Keyboard than Microsoft did with their on screen keyboard)とのことです。詳細はTeam JapanのRAD Studio 2010: タッチキーボードとChris BensenさんのRAD Studio 2010 - Touch Keyboard。Chris Bensenさんのコメントによれば、101/102/106キーボードレイアウトが入力ロケールにより選択されるが、アジア系言語は日本語だけで、中国語、韓国語、アラビア語は間に合わなかった、とのことです。
uses
Windows, SysUtils, Classes, ShellAPI;
function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
AllowUndo: Boolean; FilesOnly: Boolean;
NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;
function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
AllowUndo: Boolean; FilesOnly: Boolean;
NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;
function InternalDeleteFiles(const Filenames: String;
WindowHandle: HWND;
AllowUndo: Boolean;
FilesOnly: Boolean;
NoErrorUI: Boolean;
Silent: Boolean): Boolean; forward;
function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
AllowUndo: Boolean; FilesOnly: Boolean;
NoErrorUI: Boolean; Silent: Boolean): Boolean;
var
FilenameArray: String;
begin
FilenameArray := ExpandFileName(Filename) + #0;
Result := InternalDeleteFiles(FilenameArray,WindowHandle,
AllowUndo,FilesOnly,NoErrorUI,Silent);
end;
function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
AllowUndo: Boolean; FilesOnly: Boolean;
NoErrorUI: Boolean; Silent: Boolean): Boolean;
var
Index: Integer;
FilenameArray: String;
begin
FilenameArray := '';
for Index := 0 to Filenames.Count - 1 do
begin
FilenameArray := FilenameArray + ExpandFileName(Filenames.Strings[Index]) + #0;
end;
FilenameArray := FilenameArray + #0;
Result := InternalDeleteFiles(FilenameArray,WindowHandle,
AllowUndo,FilesOnly,NoErrorUI,Silent);
end;
function InternalDeleteFiles(const Filenames: String;
WindowHandle: HWND;
AllowUndo: Boolean;
FilesOnly: Boolean;
NoErrorUI: Boolean;
Silent: Boolean): Boolean;
var
SHOP: TSHFileOpStruct;
begin
with SHOP do
begin
Wnd := WindowHandle;
wFunc := FO_DELETE;
pFrom := PChar(Filenames);
pTo := nil;
fFlags := FOF_NOCONFIRMATION;
if AllowUndo = True then
begin
fFlags := fFlags or FOF_ALLOWUNDO;
end;
if FilesOnly = True then
begin
fFlags := fFlags or FOF_FILESONLY;
end;
if NoErrorUI = True then
begin
fFlags := fFlags or FOF_NOERRORUI;
end;
if Silent = True then
begin
fFlags := fFlags or FOF_SILENT;
end;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
Result := (SHFileOperation(SHOP) = 0) and (SHOP.fAnyOperationsAborted = False);
end;
元ねたはDelete files with the ability to UNDO他多数。