トップページ⇒tech
981コメント302KB

Delphiで小さな実行ファイルを作ろう

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
またDelスレでゴメンなさい。sageで進行するので許してね
0002デフォルトの名無しさんNGNG
常時あげ
00031NGNG
参考サイト : http://www.din.or.jp/~tetsu/apps/ ここの小さい exeを作りたい
0004デフォルトの名無しさんNGNG
あとはここだね
http://www.google.co.jp/search?q=%92P%94%AD%83X%83%8C%97%A7%82%C4%82%E9%93z%82%CD%8E%81%82%CB%81B%82%C6%82%A2%82%A4%82%ED%82%AF%82%C5%8FI%97%B9%81B&hl=ja&lr=
00051NGNG
まずは
http://pc.2ch.net/test/read.cgi/tech/1008238418/216
ポトペタが嫌いな人へのDelphi入門スタート

メモ帳で
program Hellow;
uses windows ;
begin
 if MessageBox(0 ,'こんにちは','タイトル',MB_OKCANCEL or MB_ICONINFORMATION )= IDOK
  then MessageBox(0 ,'元気だよね','ありがとう',MB_OK or MB_ICONQUESTION );
end.
と書いて ファイル名  Hellow.dpr で保存
このファイルをDelphiでダブルクリックして実行。

入門編終わり
00061NGNG
>>4 いやホントゴメンね

ダイアログアプリを作る時の参考になるコード
http://member.nifty.ne.jp/m-and-i/tips/useresfile.htm
0007デフォルトの名無しさんNGNG
http://www.keddy.ne.jp/~ill/

ここのProgramsに置いてあるごみ。
いたい、痛すぎる。
0008デフォルトの名無しさんNGNG
>>7
始めたばかりなら別にいいんじゃない?
0009デフォルトの名無しさんNGNG
>>8

得意気に公開するのが痛い。しかもひろゆきを馬鹿にしているし。
0010デフォルトの名無しさんNGNG
>>9
別に得意げには見えないけど?
0011デフォルトの名無しさんNGNG
>>10

UG気取り
00121NGNG
とりあえず俺も小さなプログラム作るの挑戦中 ・・・あんまり意味ない行為とはわかってるけどね winAPIの勉強と思ってやってる

なにせ
SysUtils とか Registory ユニットを使うだけでそれぞれ20Kbyteくらい一挙に増えるから
直API叩きをやらなければならない
0013デフォルトの名無しさんNGNG
C#なら普通に作ってもバイナリ小いよ。
0014デフォルトの名無しさんNGNG
Delphiでコンソールアプリは良く設計するから、別に意識することないな・・・。
TPC.exeの変わりにDCC32.EXEを実行してるだけ。
00151NGNG
とりあえず、こんな感じで直APIに挑戦中
たぶん大きなアプリになるとこういうのを個別に作るより
TRegistory使う方がトータルサイズは小さくなったりするんだろうけど

レジストリを読む関数
function ReadUserStrReg(const RegPath,SubKey: String):string;
var
Key: HKey;
err:DWORD;
typ:DWORD;
size: Integer;
begin
Result:='';
err := RegOpenKey(HKEY_CURRENT_USER,PCHAR(RegPath),Key) ;
if err = 0 then Try
err:=RegQueryValueEx(key,PCHAR(SubKey),nil,@typ, nil,@size);//必要なサイズを知る
if err<>0 then exit;
SetLength(Result,size);
RegQueryValueEx(key,PCHAR(SubKey) ,nil,@typ, PByte(Result),@size);
finally RegCloseKey(Key) end;
end;
0016DelフサギコNGNG
   ∧,,∧    マターリ
  ミ,, ゚Д゚彡
   〃つ旦O
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
__∧_____

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1009085598
昨日、久しぶりにプログラミングの感覚を取り戻したくて
ちょっと作ってみた。コマンドラインのプログラム。

仕様は

 BbsIndent HtoZ ファイル名
とするとプログラムソースの先頭インデントを
半角スペースの場合全角スペースに置き換える

 BbsIndent ZtoH ファイル名
だと全角スペースインデントを半角スペースにする


DelphiIDEのツールからプログラムを呼び出して

実行時引数を
  HtoZ $EDNAME
や
  HtoZ $EDNAME

にすると、DelphiIDE上で普通の半角スペースインデントを
全角スペースに置き換えられるので
2chに貼り付けたりする時に便利

行先頭の半角スペース2個と全角スペース1個とを置き換えてます。

どうせならエキスパートを組み込んだ方がいいんだけど。
これはこれで手軽に使えるかな。
必ず変換ソースファイルを保存してから動作させるようにしましょう。
0017DelフサギコNGNG

  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ ゚Д゚ミっ < >>5 Helloの綴り間違ってるよ
  |''U ̄|   \_________________________
  | ̄ ̄|  ワザトカナ?
 /    ゙ヽ
(   ゚Д゚  ) < Hell World! Hell World!
人____ノ
0018デフォルトの名無しさんNGNG
and you scream! on HELLOWEEN.
00191NGNG
フサギコさんにレス付けて貰った・・・嬉しい・・

という事でBbsIndent.exe コンパイルして実験してみました。
 Delphi5 59KByte
 Delphi6 126KByte なんと倍!

たった2つのユニットしか使ってないのにこのサイズ?という事で

usesに入れるだけで増えるサイズ
Forms  267KByte
SysUtils 24KByte 文字列や例外を使うなら必須か?
typinfo  24KByte
Classes  40KByte D6では86K


ところでこの BbsIndent.exeってコンソールアプリである必要ってないですよね?
{$APPTYPE CONSOLE}を外しても全く同じ動作をしました。
00201NGNG
欲が出て簡単なインストーラを作りたいなと思いだしました。
リソースにファイルのアーカイブしたのを入れて実行したら
指定したディレクトリに解凍してレジストリの設定するような簡単なものです。
という事で出来るだけ本体は小さくしたい、20K代が目標です。
このサイズは、
SysUtils と Classesを使わずに作らないとやっぱり難しいようです。

という事で、既にファイルがあるかどうか調べる FileExist置換用の関数

function FileExist(fname:string):boolean;
var FindData: TWin32FindData;
begin
 Result:= FindFirstFile(PChar(fname), FindData) <> INVALID_HANDLE_VALUE;
end;
00211NGNG
リソースの設定方法と読み方判りました。
test.rc
TEST RCDATA "test.MyArc"
 こんな1行のファイルを作ります。
 TEST は識別名で好きな名前を付けます
 RCDATAは決まっています
 test.MyArcは埋め込みたいファイルです

これを "プロジェクトに追加" で追加すれば勝手に test.MyArcが追加されます

このリソースを読む方法は

function setup:string;
var ResInstance,Size :integer;
var hr:HRSRC;
var src:PByte;
begin
 ResInstance := 0; //実行ファイルの場合は0を渡せばいいみたい
 // ResInstance := System.FindResourceHInstance(HInstance);
 hr  := FindResource (ResInstance, 'TEST', RT_RCDATA);
 Size := SizeofResource(ResInstance, hr );
 src := PByte(LockResource( LoadResource(ResInstance,hr) ));
 UnArchive(src,Size); //自作のファイル展開ルーチン
end;
00221NGNG
APIで 直接ファイルを読書する方法判りました
それぞれ一挙に文字列に受け取ります。

function readFileStr(fname:string):string;
var hin:THandle;
var rsize:DWORD;
begin
result:='';
 hin:=CreateFile(PChar(fname),GENERIC_READ,0,nil,OPEN_EXISTING
 ,FILE_ATTRIBUTE_NORMAL,0);
if hin<>0 then try
  SetLength(Result, GetFileSize(hin, nil));
  ReadFile(hin,PChar(Result)^,Length(Result),rsize , nil);
 finally CloseHandle(hin);
 end
end;

function writeFileStr(fname,data:string):boolean;
var hout:THandle;
var wsize:DWORD;
begin
result:=false;
 hout:=CreateFile(PChar(fname),GENERIC_WRITE,0,nil,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if hout<>0 then try
  if WriteFile(hout,PChar(data)^,Length(data),wsize,nil) then
   result:=wsize=Length(data);
 finally CloseHandle(hout);
 end
end;

これで目標の20Kbyte付近のアプリが出来ました。
驚いた事に systemとwindowsだけの場合 Delphi6の方がサイズが小さくなりました
00231NGNG
>>16 フサギコさんのと同じ働きをします。サイズ16KByteです
---------以下ソース------
program BbsIndent;
uses windows;
const
 HankakuIndent: String = #32#32;
 ZenkakuIndent: String = #$81#$40;//全角のスペース

{ここに>>22 の readFileStr writeFileStr をコピペ}
   
function RepString( Str, OldPattern, NewPattern: String):string;
 var
  i: Integer;
begin
  Result:='';
  i:=Pos(OldPattern,Str);
 while i>0 do begin
  Result:=Result+copy(Str,1,i-1) //前半を複製
      +NewPattern;
  delete(Str,1,i-1+length(OldPattern));
  i:=Pos(OldPattern,Str);
 end;
 Result:=Result+Str;
end;

function upperCase(const s:string):string;
var
 c: char;
 i: integer;
begin
result:=s;
for i:=1 to Length(Result) do begin
  c:=s[i];
   if c in ['a'..'z'] then Result[i]:=char(ord(c)- (ord('a')-ord('A')) );
 end;
end;

var str:string;
begin
 if ParamCount <> 2 then Exit;
 if upperCase(ParamStr(1))='HTOZ' then begin
  str:= readFileStr(ParamStr(2));
  str:= RepString(str,HankakuIndent,ZenkakuIndent);
  writeFileStr(ParamStr(2),str);
 end else
 if upperCase(ParamStr(1))='ZTOH' then begin
  str:= readFileStr(ParamStr(2));
  str:= RepString(str,ZenkakuIndent,HankakuIndent);
  writeFileStr(ParamStr(2),str);
 end
end.
0024デフォルトの名無しさんNGNG
そこまでするんだったら、Variant とかを使わない
SysUtils/Classes を調整してみた方がおもしろいかも。

リハビリでやってみるか。どこかバイナリファイルをアップできる場所
おしえて。
0025デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
ここなんか(ここの)定番かと。
00261NGNG
ダイアログアプリの作り方判りました。

1)Delphi5のCDROMからWORKSHOPを探してインストール
2)空行でTEST.RCを作る
3)Resource Workshop を走らせて2)のファイルを読む
4) 適当にダイアログを作る
例:
#define DIALOG_1 1
#define IDC_PUSHBUTTON1 101
#define IDC_PUSHBUTTON2 102
#define IDC_EDIT1 103

DIALOG_1 DIALOG 6, 15, 199, 62
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "DIALOG_1"
{
DEFPUSHBUTTON "空白全角に", IDC_PUSHBUTTON1, 4, 3, 50, 14
DEFPUSHBUTTON "半角に戻す", IDC_PUSHBUTTON2, 5, 20, 50, 14
PUSHBUTTON "Cancel", IDCANCEL, 5, 38, 50, 14
EDITTEXT IDC_EDIT1, 59, 5, 132, 54
}

5)Delphiの新規作成でコンソールアプリにし
  {$APPTYPE CONSOLE} を削除し、名前を付けて保存

6)Delphiのプロジェクトに追加で 2)を追加する
7)Delphiの新規作成でユニットを作成する

例:
program Indent2CH;
{$R 'TEST.res' 'TEST.RC'}
uses
Unit1 in 'Unit1.pas';
begin
WinMain; <-これを追加
end.

・・・つづく・・・
0027unit1.pasNGNG
unit Unit1;
interface
uses Windows,Messages ;
type TDialog =class(TObject)
Handle:THandle;
private
  procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;
  procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
public
procedure WndProc(var Message: TMessage);
procedure DefaultHandler(var Message); override;
end;
procedure WinMain;
var Dialog1:TDialog;
implementation
function DlgProc(hDlg: HWND; iMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT;stdcall;
var msg:TMessage;
begin
with msg do begin Msg :=iMsg; LParam:=lp ; WParam:=wp ; Result:=0 ; end;
 Dialog1.WndProc(msg);
 Result:=msg.Result;
end;
procedure WinMain;
var msg: TMsg;
begin
 Dialog1:=TDialog.Create;
  Dialog1.Handle := CreateDialog(hInstance,MAKEINTRESOURCE(1), 0, @DlgProc);
try
 while GetMessage(msg, 0, 0, 0) do
 begin
  if (Dialog1.Handle = 0) or not IsDialogMessage(Dialog1.Handle, msg) then
  begin
   TranslateMessage(msg);
   DispatchMessage(msg);
  end;
 end;
// CloseHandle(Dialog1.Handle);
finally
 Dialog1.Free;
end;
end;
{ TDialog }
procedure TDialog.WndProc(var Message: TMessage);
begin
Dispatch(Message);
end;

procedure TDialog.WMCommand(var Message: TWMCommand);
begin
case Message.itemID of
 101:begin   end; //ここにプログラムを入れる
 102:begin   end;
 IDCANCEL:PostMessage(Handle, WM_QUIT, 0, 0);
end;
end;
procedure TDialog.WMPaint(var Message: TWMPaint);begin end;
procedure TDialog.DefaultHandler(var Message);
begin  with TMessage(Message) do Result:=0; end;
end.
00281NGNG
>>24 おお、すごいなあ  おいらはダイアログアプリでもう降参気味です

メッセージディスパッチを使うんだけど このitemIDをDelphi側から読む事
って簡単に出来ないのかな?

リソースワークショップで新規作成するときに  .pas とかあるから期待したけど
なんかユニットを指定したらエラーになるし使い方が判らない
0029デフォルトの名無しさんNGNG
>>28
WorkShop が吐き出す .pas をコンパイルする、かまたは .inc を出すんだと
思ったが。近頃使っていないんで、すまん。
0030デフォルトの名無しさんNGNG
WinAPIベースでよくつくるけど、
例外の再定義が面倒になって
さすがにSysUtilsは使っちゃうようになったよ。
00311NGNG
>>29 なるほど、出来ました。
 incにすれば const だけが pasにすれば
unit name;
interface
const
 DIALOG_1 = 1;
implementation
end.
 てな感じのファイルが出来ました。 これを インクルードするなりプロジェクトに追加するなりすればOKですね。

>>30 おお、同士ハッケン!
  確かに毎回 SysUtils 相当の関数自作は厳しいですね。
  勉強期間なら頑張れるけど 本番だと厳しそう。
  というか、「素直に c 使え!」って感じの声が自分の中からも聞こえて来るように

 でもメッセージディスパッチが使える分Cより効率的な筈
 例外もabortなら標準で使える。
 abort+グローバル変数でもいいじゃないって自分を騙しながら
0032デフォルトの名無しさんNGNG
>  確かに毎回 SysUtils 相当の関数自作は厳しいですね。

使う関数だけコピペしたら良いんじゃないの?
0033デフォルトの名無しさんNGNG
>>32 見てみれば判るけど
 相互に関連しあってて簡単には分離出来ないぞ 例外とか
 もちろん分離出来るのもあるけどね
00341NGNG
SelectDirectoryのようにTFormを使わないフォルダ選択関数出来ました

uses shlobj,activex;

function MySelectDirectory(const tit:String):string;
var
BInfo:BROWSEINFO;
RetFolder:PItemIDList ;
var fName:string;
begin
 result:='';
 setlength(fName,MAX_PATH);
 fName[1]:=#0;

 BInfo.pidlRoot    := nil; //ルートフォルダ名
 BInfo.hwndOwner   := 0 ; //親ウィンドウのハンドル。
 BInfo.pszDisplayName := pChar(fName); //選択されたフォルダ名が返る
 BInfo.lpszTitle   := pChar(tit);
 BInfo.ulFlags    := BIF_RETURNONLYFSDIRS;
 BInfo.lpfn      := nil; //ダイアログプロシージャへのポインタ
 BInfo.lParam     := 0; //プロシージャを使う時の
 RetFolder:= SHBrowseForFolder( BInfo );
  Result:=PChar(fName);
 if RetFolder<>nil then try
  if SHGetPathFromIDList( RetFolder, pChar(fName) ) then
   Result:= pChar(fName);
 finally CoTaskMemFree( RetFolder ); end;
end;
00351NGNG
>>32 そうですね。 関数だけコピペしてすむのはコピペすればOKだと思います
0036デフォルトの名無しさんNGNG
KOLはどうですか?
MCKでビジュアル開発できてADOも使えて45kbyteとか
URLはgoogleで探してちょ(すぐみっかる)

あとglutとかD3DXを使うというのも正しい手かも
ほかに小さくIEをくるんだアプリを作ってそこからCOM使いまくりというのもありかも
0037デフォルトの名無しさんNGNG
http://bonanzas.rinet.ru/kolstate.htm
ハケーン
00381NGNG
DDEで他のアプリに命令を送る方法判りました
 DDEって昔の技術みたいで殆ど解説が無いので結構苦労しました
DDEsendExec(相手のアプリ名 , トピック名 , メッセージ ) と使います
トピック名は エクスプローラのファイルタイプの設定で編集にすると見えるアレです


function DDeCallBack(CallType, Fmt: UINT; Conv: HConv; hsz1, hsz2: HSZ;
  Data: HDDEData; Data1, Data2: DWORD): HDDEData stdcall;
begin  result:=0;
end;

function DDEsendExec(const AppName,Topic,Cmd:string):boolean;
var DDE: Longint;
var Err: Longint;
var hszService,hszTopic:HSZ;
var Conv:HConv;
begin
DDE:=0;
Err:=DdeInitialize(DDE,DDeCallback, APPCMD_CLIENTONLY , 0);
Result:= 0=Err;
if not Result then begin exit;
end;
  hszService := DdeCreateStringHandle(DDE,PChar( AppName), CP_WINANSI);
  hszTopic  := DdeCreateStringHandle(DDE, PChar(Topic) , CP_WINANSI);

 try
  Conv := DdeConnect(DDE, hszService, hszTopic, nil);
   Result:= Conv <> 0 ;
  if not Result then exit;
  try
  err := DdeClientTransaction(PChar(Cmd),Length(Cmd)+1 ,Conv ,0, 0,XTYP_EXECUTE , TIMEOUT_ASYNC, nil);
  Result:=err<>0;
  finally
   DdeDisconnect(Conv);
  end;
 finally
  DdeFreeStringHandle(DDE, hszTopic );
  DdeFreeStringHandle(DDE, hszService);
  DdeUninitialize(DDE);
 end;
end;
0039デフォルトの名無しさんNGNG
いちどあげとく
0040デフォルトの名無しさんNGNG
あげ
0041デフォルトの名無しさんNGNG
dfmtodprというユーティリィティでボタンとかリストボックスで作ったアプリは
Win32APIのテンプレートにしてくれるので便利

あと日本でもhalbow氏の
http://halbow.cool.ne.jp/top.html
は悪くはないがここまでやるならオブジェクト指向はいったんおいといて
関数ライブラリーにしたほうが良かろう。
0042デフォルトの名無しさんNGNG
>> 41 ありがとう

Dfm2Dpr
ttp://ivs-d.chat.ru/

0043デフォルトの名無しさんNGNG
>>41

関数では継承できない......
0044デフォルトの名無しさんNGNG
>>41

関数ではメッセージ処理もできない
0045デフォルトの名無しさんNGNG
そんな面倒なことしてまで Delphi 使う理由があるのだろうか。
今のご時世EXEが大きくたって問題にはならんだろう。
工数掛けてまでサイズを取るか、工数掛けずに良質のものを作るのか?
もちろん後者なのは言うまでもないはず。
もういちど初心に戻って Delphi を使う意味を考えた方がいいのではと思います。
0046デフォルトの名無しさんNGNG
IDE付のgccと言う感覚で使ってるからなあ・・・
0047デフォルトの名無しさんNGNG
>>45

工数がどうの、サイズがどうの、という方ばかりが Delphi のユーザでは
ないことをお忘れなく。

0048デフォルトの名無しさんNGNG
>47同意。俺は趣味で使ってるからなー、意味が無くともサイズ削るのが楽しー。
今、ReleaseBuild用の代替ライブラリー作って遊んでる。まだ公開してないけど。
0049デフォルトの名無しさんNGNG
>>45
メモリやハードディスクが安くなり、通信速度が向上したから
といって、大きい exe でもことたれり、とするのはプログラマ
としては怠慢なのでは?
Delphi を使って、小さくて<良質な>実行ファイルができるなら
それに越したことはないだろう。
もちろん、コストとのトレードオフは言うまでもないが。
0050デフォルトの名無しさんNGNG
>>45=プロ(仕事)
>>49=アマ(趣味)
0051デフォルトの名無しさんNGNG
>>50
プロとは、フォーム1枚表示するようなアプリでも200kBの exe を
つくっても平気な方々のことですか?
ふーん。
0052デフォルトの名無しさんNGNG
そんなにサイズが気になるならDelphiを使わないという選択肢の方が賢かろう。
Delphiのフレームワークから逸脱するんならDelphiの魅力が半減するからな。
0053デフォルトの名無しさんNGNG
>>52
ご教示、ありがとう。
Delphiのユーザはサイズが気にならないんですね。
「Delphiを使わないという選択肢」を選んだとして
何を使えば、小さなアプリがつくれますか?

「Delphiのフレームワーク」とは、VCLのことですか?

ということは、Delphiの魅力の半分はVCLをつかって
大きな exe をつくる、ということなんですね。
0054デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
Delphiの魅力は生産性の高さだろ。その多くはVCLの扱いやすさのおかげじゃない。
サイズにこだわるよりもっと機能の充実を考えるべきだろ。
そんなにサイズを追求するならVCか、全部アセンブラで組めば?

…と、傍から見ていると思う。
もちろんDelphiが裏で何をやっているかの勉強にはなるが。
005553NGNG
>>54 そんなにサイズを追求するならVCか、全部アセンブラで組めば?
VC だと小さいexeがつくれるんですね? Delphi ではどうしてだめなの?
(アセンブラはしりません)
0056デフォルトの名無しさんNGNG
コンパイルにかかる時間がもったいなくなければVC使えばいいよ。
005753NGNG
>>56
コンパイルにかかる時間が惜しいので、大きなexeをつくってるんですか?
005853NGNG
みなさん、ありがとう、VCに逝って来ます。
0059デフォルトの名無しさんNGNG
実行ファイルのサイズを小さくすることが目的なの?
1から44までを見る限り、APIを直接呼び出して
コードを小さくしよう、という意味にとれるのだけど。
0060デフォルトの名無しさんNGNG
まとめ
45からの議論を読んでみると

Delphi → 生産性が高く、コンパイルが速い → 大きな exe 生成
VC → 生産性が低く、コンパイルもおそい → 小さな exe 生成

となるんだけど、45さんや52,54さんの主張が真だとすると、なぜ、
Delphiユーザの数はVCユーザの数の半分にも満たないのだろう?
Delphiがでてから6,7年は経っているのに。

本当に、小さいexeにこだわるのはアマチュアだけ?
まぁ、オレはアマだけどさ。
0061デフォルトの名無しさんNGNG
「VC=EXE小さい」って言ってるけど、MFCアプリで静的リンクさせれば300KB超あるよ。(もちろんリリースモードで)
VC(MFC)が小さいと思ってるのは動的リンクさせてるからだぞ。
Delphiだって実行時パッケージ使えばかなり小さくなるから、サイズに関してはどっちもどっちだよ。
0062デフォルトの名無しさんNGNG
>>60
>Delphiユーザの数はVCユーザの数の半分にも満たないのだろう?
MS の製品じゃないから。
006360NGNG
>>61
ふーん、だとすると余計に
VCユーザの数>>>Delphiユーザの数 は不可解だよね。

>>62
OSをつくったのと同じ会社の製品である、ということが
そんなに重要かねぇー。MS大好き、というヤツは少ないと
思うんだけど?
まったく分からんことが多いなぁ。プログラミングというの
は論理の世界に属すると思ったんだが、人間はそうはいかない
みたいね。

寄らば大樹の陰、じゃないけどD6のスカさにうんざりなこのごろ、
D5に戻るのも癪だから、VCに行ってみる事にするよ。
じゃ、そういうことで。
0064デフォルトの名無しさんNGNG
Delphiはコンパイルが速く、VCLを「使えば」ラクにGUIアプリもつくれるから使ってます。
VCLはあくまでツール作るときの道具なの。

VCがコンパイル速くてVCL並みのライブラリが標準装備なら
今ごろそっち移ってる
006560NGNG
>>64
問題は、そんなことではなく、

VCはコンパイルが遅くVCL並みのライブラリが標準装備
されていないのにもかかわらず

VCユーザの数>>>Delphiユーザの数

だっていう現実のことさ。
ここはDelphiスレなので64さんの意見は当然だと思いますが、
その64さんでさえ、条件が同等ならVCに移る、といってます。
どうしてなの?

オレは就職が有利そうなので、院でのツールはVCにすることに
決めたよ。
0066デフォルトの名無しさんNGNG
>オレは就職が有利そうなので、院でのツールはVCにすることに決めたよ。
これがすべてを説明してますな< VCユーザの数>
厨房な議論の割にsageを守ってるのは立派。以後もage無いように。
006760NGNG
>>66 お褒め、ありがとう。
オレは2年のときからだから3年近くDelphiをつかってきて、
Delphiの普及をこころから願っているよ。でも、現実は厳しい
ね。Cは前から知っているし、MFCも使ったことあるが、
VCLよりAPIのラップの程度が薄くて、SDKを知っている
ものにとっては、結構簡単に使えそうな感じ。でもウィザードを
つかってフレーム作ったりするのは、たしかに面倒ですね。

スレタイトルと違う話題で申し訳なかったです。>>1 & ALL

本当に Delphi ユーザの増加を願っているよ。そうすれば、情報量も
書籍の数も充実してくるんだよね。

じゃ、またいつか。
00681NGNG
 うーん。
 VCL はとても便利で、アプリを作るだけならVCL使わない意味はないと思う
だけど、VCLをより便利に使う為にも 何をやってるか判った方がいいと思ったんだ
それにはVCLによらないアプリの作り方もやった方がいいと。
 それならCでとも思ったし、実際Cにも手を出してみたけど「面白くなかった」んだ
 だって、サンプル豊富で、サンプル通りやったら動くのよ、

それと、自分用の簡単なインストーラを作りたくなって、インストーラ自体が300Kとかだと
恥ずかしいかなと
 だからレジストリへの書き込みとか、そんな方面から色々やってみてたんだ
 自分では結構スキルアップになったと思う。 C/C++でも生かせるしね
00691NGNG
45からの議論なんだけど
 Delphiのユーザ数よりVC++が当然多いってのは、
Delphiの生産性の高さも原因じゃないかと思う。 実際Delphiでアプリ作ると
 コンポ作れば作るだけ生産性あがるし、フォームは継承出来るし、
 同じような仕事だったら 
 仕様書作るより早く、こんなイメージ的なアプリ作れて、数日で調整してどう
 ぞみたいな感じになる。

俺は小さな会社でまあその会社で必要なソフトの内製 ひとりで全部やってるんだけど
 組み込み的な仕事のWindows側や会社の事務の仕事から全部Delphiで賄ってる

 そんな訳で他にプログラマ雇ってもらう必要がない。

組み込み用のマイコンにC使うし、Cの部分の検証の為やデバドラ作らなけりゃいけない
時の為に VC++も買ってるけどVC++だけで同じ事やろうとしたら、やっぱり最低3人は
必要な気がするよ。 同業者見てもそんな感じ
0070デフォルトの名無しさんNGNG
>>65
・先行有利の法則
・Pascal に人気がない
・MSDN
・MS 製品は書籍がたくさん出る
007164NGNG
今ごろVCに移ってる、などと言っていましたが
将来を考えると最近C++移りたくなってきてるんです・・・。

うーん。

さすがに、ゲーム関連をDelphiでやってるのは少ないからなあ。
そもそもコンシューマだとDelphiはツールぐらいでしか活躍できないし。
0072デフォルトの名無しさんNGNG
>>70
それもあるが。
俺が仕事、趣味を通して考えるに、
企業ユース:VC>Delphi
個人ユース:VC<Delphi

ではなぜ企業ではVCなのか?
主な理由として、
(1) OSと同じMS製ならば何かと安心(ビジネスだと保守的になってしまう傾向にある。)
(2) その当時、C/C++がスタンダードな言語であったため、
   Delphi-Pascal は敬遠された。(ということもあり、試用せずに評価している。)
(3) 以前のボーランドは会社の状態が非常にやばかったため、
  つぶれそうな会社の製品を使う余地はない。

一方、個人=Delphiの理由は、
(1) VCに比べて敷居が低い
(2) 簡単にハデで高機能なプログラムが作れる
(3) VBの場合は、細かい制御等ができないが、Delphiは一通り何でもできる。
(4) VBと違いネイティブコードを吐き出せるし、ランタイムライブラリが要らないから
  配布し易い。(フリーウェア作者には好評)

仕事では客先から言語指定されるときはVC or VB。Delphiってことはまずない。
もちろん言語指定がない場合は当然Delphiでやってるよ。
DelphiがMS製なら企業ユースにもかなり浸透したと思うが。
0073デフォルトの名無しさんNGNG
>>71
将来を考えるのなら Java, C# やった方がいいのでは。
デバドラとか作るんなら C/C++ やっとく必要はあるが。
0074デフォルトの名無しさんNGNG
>>71 企業がゲーム作るとなるとWindows以外への移植とかも考えなければいけないし
    結局 C って感じになるんでしょうね

>>72
 企業でも、中小でコスト意識の厳しい所は Delphiになるのかも
 で Delphi選ぶと 効率がいいから人員が少なくてすむ=Delphiユーザが少ないとか
 実際Delphi使うと、一人で大抵の事出来るから、ソフト外注するなんて考えられないよね

VC++や C#でプログラマでございますってやっても 企業の都合でポイされるだけみたい
な感じがする。 だったら プログラマ職としてやるより、 他の業種のエンジニアとして
プログラムも出来るスタイルの方が長持ちするのかもなんてね
0075デフォルトの名無しさんNGNG
MS製かつDelphi似のC#ってそういう意味じゃ、かなりよいものかも。
BorlandやMSにさえこだわらなけりゃ
0076デフォルトの名無しさんNGNG
まあ、結局 コンパイラは道具。
 大事なのはコンパイラがいかに賢いかとかじゃなくて使う人間の方。

 そういう目で見りゃ、ここの1がやってるようなのは道具を研ぐというより人間を研ぐ行為で是だと思うな

善哉善哉
0077デフォルトの名無しさんNGNG
>>76 全面同意。
Delphi は道具として優れているのでとりあえず使っている。
CもC++も知っているし、そうね、3ヶ月あれば、いまの
Delphiユーザとしての自分のスキルに追いつける自信がある。
JavaとC#は囓った程度だが、恐れるにたらず、いつでも乗
り換えられると、と思っている。76さんの言うように、結局
特定の言語にこだわるより、道具として割り切って、自分自身
のスキルアップを目指すのが正解みたいね。その意味で、ここ
の1のスタンスはなかなかよいと思うよ。
一方、45さんのいうことも一理あるが、そもそもこのスレの
趣旨とは無関係、というか、はなからそのことは承知のうえである、
ってことですね。
0078デフォルトの名無しさんNGNG
Java見て、今まで自分作ってきたライブラリがほとんど標準で提供されていることに驚愕したよ
驚いた反面、これなら移行はすぐだと(自作ライブラリの移植がいらないなんて素晴らしい

そのかわりJavaはDesignPatternが当たり前のように出てくる罠
だらだらDelphi使ってると面食らっちまう・・・
0079デフォルトの名無しさんNGNG
>>20
>Result:= FindFirstFile(PChar(fname), FindData) <> INVALID_HANDLE_VALUE;
これって見つかったときに CloseHandle しなくていいの?
0080デフォルトの名無しさんNGNG
成功したときはFindClose必須ですな
0081デフォルトの名無しさんNGNG
だれだよこんなスレ立てた奴…
http://pc.2ch.net/test/read.cgi/tech/1012574089/
00821NGNG
http://pc.2ch.net/test/read.cgi/tech/1012574089/4
が動かない件ですが

if hWindow=0 then
MessageBox(0, PChar(SysErrorMessage(getLastError)), nil, mb_Ok);

を入れてみると 'ウィンドウ クラスを見つけることができません。' とメッセージが出ます
あれ、上で RegisterClass してるのにと見ると

function WinRegister: Boolean;
var
WindowClass: TWndClassEx;
begin

と肝心のクラス定義がローカル変数というオチのようです
0083デフォルトの名無しさんNGNG
>>82
ほんとだぁー、不思議、
var
WindowClass: TWndClassEx;
部分をグローバルにしたら動くね。どうして?
教えて下さい。
00841NGNG
>>83 
私も詳しくは判りませんが、
RegisterClassではポインタをリンクリストみたいな感じで登録して
CreateWindowでポインタを辿って窓クラスを検索するようなイメージで考えていました

どちらにしても、関数内で閉じてない処理に、ポインタ渡しで永続的な情報を渡すのは
なんか変だなと思いますし
008583NGNG
>>84
レスありがとうございます。
わたしの環境では、
function WinRegister: Boolean;
が、そもそもfalseを返します。どうしてかよく分かりません。
CreateWindow() でのクラス指定は、RegisterClass(Ex) が返す
Atom を使うか、クラス名をそのまま指定しますよね。今の場合、
const
 AppName = 'Window1';
としてクラス名はグローバルなので、何も問題がないように思い
ますが、どーなんでしょ? あのコードをかかれた方も、D5では
うまくいくって言ってましたし。なぜかなぁ?
008683NGNG
>>84
あっ、84さんの仰っている事って、RegisterClass(Ex) のパラメータ
を、登録したプロセスの中のメモリに保持しなきゃダメってことですか?
どこかで、登録したウィンドウクラスの有効性は、登録したプロセスの
寿命と同じ、というのを読んだことがありますが、それと関連してるんで
すかね? それにしても、やはり function WinRegister: Boolean;
が false を返すのがふしぎです。
00871NGNG
program Window1;
uses
 Windows,
 Messages;
const AppName = 'Window1';
type TMiniWin=class
private
 wATM    : ATOM    ;//RegisterClassの返すアトム
 WindowClass: TWndClassEx;
 hWindow: HWnd;
protected
 procedure WndProc(var Message: TMessage);virtual;
 procedure WMPaint(var Message: TWMPaint); message WM_PAINT;


function WinRegister: Boolean;
function WinCreate : Boolean;
public
procedure DefaultHandler(var Message); override;
constructor Create; virtual;
function Show:Boolean;virtual;
end;

function WindowProc(Window: HWnd; AMessage, WParam, LParam: Longint): Longint; stdcall; export;
var msg:TMessage;
begin
 msg.Msg :=AMessage; msg.LParam:=LParam ; msg.WParam:=WParam;msg.Result:=0;
 TMiniWin(GetWindowLong( Window,GWL_USERDATA) ).WndProc(msg);
 Result:=msg.Result;
end;

procedure TMiniWin.WndProc(var Message: TMessage);
begin  Dispatch(Message); //メッセージをディスパッチします
end;
procedure TMiniWin.DefaultHandler(var Message );
begin  with TMessage(Message ) do
 Result:=DefWindowProc(hWindow,Msg, wParam, lParam);
end;

function TMiniWin.WinRegister: Boolean;
begin
 with WindowClass do
 begin
  cbSize:=SizeOf(WindowClass);
  Style:=cs_hRedraw or cs_vRedraw;
  lpfnWndProc:=@DefWindowProc;
  cbClsExtra:=0;
  cbWndExtra:=0;
  hInstance:=HInstance;
  hIcon:=LoadIcon(0, idi_Application);
  hCursor:=LoadCursor(0, idi_Application);
  hbrBackground:=HBrush(Color_Window);
  lpszMenuName:=nil;
  lpszClassName:=PChar(AppName);
  hIconSm:=0;
 end;
 wATM:=RegisterClassEx(WindowClass);
 Result:=wATM <>0;
// if not Result then  MessageBox(0, PChar(SysErrorMessage(getLastError)), nil, mb_Ok);
end;
00881NGNG


function TMiniWin.WinCreate: Boolean;
begin  Result:=false;
if wATM=0 then if not WinRegister then exit;
 hWindow:=CreateWindow({PChar(AppName)}PChar(wATM), PChar('ObjectPascalWindow'),
            ws_OverlappedWindow, cw_UseDefault, cw_UseDefault,
            cw_UseDefault, cw_UseDefault, 0, 0, HInstance, nil);
 Result:=hWindow<>0;
 if Result then begin
 SetWindowLong( hWindow,GWL_WNDPROC ,integer(@WindowProc));
 SetWindowLong( hWindow,GWL_USERDATA  ,integer(self));
 end;
end;

function TMiniWin.Show:boolean;
begin
Result:=False; if hWindow=0 then if not WinCreate then exit;
  Result:= ShowWindow(hWindow, CmdShow);
  Updatewindow(hWindow);
end;

constructor TMiniWin.Create;
begin  inherited
end;

procedure TMiniWin.WMPaint(var Message: TWMPaint);
var h:HDC;
var ps:PAINTSTRUCT;
 procedure textOut(x,y:Integer;s:string);begin Windows.TextOut(h,x,y,PChar(s),Length(s)); end ;
begin
 h:=BeginPaint(hWindow,ps);
  textOut(10,10,'こんにちは');
 EndPaint(hWindow,ps);
end;

procedure RunMessageLoop;
var AMessage: TMsg;
begin
 while GetMessage(AMessage, 0, 0, 0) do
 begin
  TranslateMessage(AMessage);
  DispatchMessage(AMessage);
 end;
end;
///////// main /////////
var MiniWin:TMiniWin;
begin
 MiniWin:=TMiniWin.Create;
 MiniWin.Show;
 RunMessageLoop
end.
00891NGNG
>>83 さん 試しに 上のコードだとどうなりますか?

D6でも、元のコードを少しコードの順を変更したりして
スタックがそこまで消費されないと大丈夫になったりしますから
スタックにあると壊れてしまうからのように思います
00901NGNG
ありゃ・・・・ 2度目は同名のWndClassが作れないから 複数の窓が開けないや


wATM : ATOM ;//RegisterClassの返すアトム
WindowClass: TWndClassEx;
この2つはクラス外に出して、ローカル領域にもってゆかないとダメみたい
009183NGNG
>>89

回答ありがとうございました。
帰宅したので、遅レス申し訳ありません。

ははぁ、Generic.c のウィンドウ部分をクラスにしたのですね。
大体動きましたが、ちょっと気が付いた点を......

1) WM_DESTROY メッセージの処理
がされていないので、Xボタンでウィンドウは破棄されるがメッセージ
ループから脱出できないのでアプリが終了しない
[対処]
procedure WMDestroy(var Message: TWMDestroy); message WM_DESTROY;
と宣言して、
procedure TMiniWin.WMDestroy(var Message: TWMDestroy);
begin
PostQuitMessage(0);
end;
としてキューに WM_QUIT メッセージをポストする

2) ExitCode の設定
がされていない
[対処]
function RunMessageLoop:WPARAM;
として、この関数の最後に
result := AMessage.wParam;
のように変更してから、メッセージループの実行部分を
ExitCode := RunMessageLoop;
とする。

3) MiniWin オブジェクトの破棄
がされていないので、結局、メイン手続きを
var MiniWin:TMiniWin;
begin
MiniWin:=TMiniWin.Create;
MiniWin.Show;
ExitCode := RunMessageLoop;
MiniWin.Free;
end.
にする。

以上です。あと、メソッドにできないウィンドウ関数で、ウィンドウハンドルと
それをラップしているオブジェクトを関連付けるために
SetWindowLong(hWindow,GWL_USERDATA,integer(self));
として GWL_USERDATA 領域にインスタンスを格納しているのは面白いと思いました。
ただ、初めに RegisterClass() でのウィンドウ関数の設定は @DefWindowProc に
なっており、ウィンドウ作成後に関連付けが行われるため、ウィンドウ作成に伴う
WM_CREATE などのメッセージをオブジェクトで受け取れないのは残念です。
また、WM_DESTROY で関連するオブジェクトを自動的に Free できるようにすると
便利だと思います。
009283NGNG
あと細かいことですが
hbrBackground:=HBrush(Color_Window);
の部分は
hbrBackground:=HBrush(Color_Window+1);
だと思います。
0093デフォルトの名無しさんNGNG
>WM_CREATE などのメッセージをオブジェクトで受け取れないのは残念です。
なんで?
出来てるよ?
009493NGNG
変な言い方したゴメン。
俺は出来てるよ。だった。
00951NGNG
>>91 動いたという事は、
やっぱりスタック上のWindowClassが悪さしてたんですね。

解放の件は>>79さんにも指摘されましたが、ちょっと私のコードは甘いようです

WindowProcの件については、TMiniWinインスタンスアドレスを SetWindowLongで渡してい
る関係上、どうしてもCreateWindow時に インスタンスアドレスを渡せない為に仕方ないか
と思います。
WM_CREATE は窓ハンドル作成時に自分で自分に送りつけるしかないかと
00961NGNG
ありゃ下げ忘れた・・・かちゅ〜しゃ使えなくなってたし

ダイアログと違ってクラスで実装しても VCLとは無関係な世界になって
あんまり面白くないですね。
 メリットとしてはFreePascalとかでも使えるくらいかな
0097デフォルトの名無しさんNGNG
たぶん初めからDefWindowProcじゃなくてWindowProcにWindowProcを設定して、
CreateWindowのパラメータでインスタンスアドレスを渡しWindowProc内部で、
WM_NCCREATE/WM_CREATEのときにSetWindowLongするって話?>93
00981NGNG
なるほど >>97 さん CreateWindowの最後のlpParamで渡すんですね
009993NGNG
>>97
ビンゴ
010083NGNG
>>95
>やっぱりスタック上のWindowClassが悪さしてたんですね。
そうですね、これは微妙で深刻な問題だと思います。

とりあえず、元コードで
function WinRegister: Boolean;
が false を返す件は、with を使わなければ回避できそうです。

あと、細かいところでは
hCursor:=LoadCursor(0, idi_Application);
のところは
hCursor:=LoadCursor(0, IDC_ARROW);
だと思います。
  
  
01011NGNG
いちどあげます

100さん >>88のコードをキレイに書こうと色々追加してたら とても大きくなってしまい
しかもキレイじゃありません。 うーん
それと、コンポーネントじゃない窓クラス作ってもそれほどの意味はやっぱりないですね
ダイアログアプリ程度が限界という感じかな
0102100NGNG
>>101
>コンポーネントじゃない窓クラス作ってもそれほどの意味はやっぱりないですね

通常、インスタンスをひとつしか作りませんからね。そうかもしれません。
でもイベントをつけたり、プロパティーをとおしてウィンドウの制御をしたり
というふうにすると<勉強>にはなるかもしれませんね。
0103デフォルトの名無しさんNGNG
SysUtils, Classes, Controls, Forms, Menus, ActnList, Buttons,,,,
ぐらいの適当なパッケージを作って(〜600Kくらいになる)、
それとリンクさせるのが一番効率いいのかな。(何もしないフォームだと14K)
0104デフォルトの名無しさんNGNG
>>103
それは、exe の中身をパッケージに移しただけでは?
いや、確かに小さい exe ではあるね。なるほど。
0105デフォルトの名無しさんNGNG
0106デフォルトの名無しさんNGNG
ageとくか
0107デフォルトの名無しさんNGNG
Delphi.NETのはむちゃくちゃ小さくなりそう。
0108デフォルトの名無しさんNGNG
皆、サイズのためになぜそこまで労力を注ぐ?
フォームにコンポ―ネントをバーンバーンバーン、
でコンパイルー、でOKじゃん!
0109デフォルトの名無しさんNGNG
OKじゃん!
0110デフォルトの名無しさんNGNG
OKジャン
0111デフォルトの名無しさんNGNG
OXジャン
0112デフォルトの名無しさんNGNG
ゲーム作ってるけれど正直な話、実行ファイルより他のデータの方が大きいので、
実行ファイルサイズなんて大して気にならない。
それよりもDirectXを使ったときの変な挙動が気になるから、
APIでゴリゴリ(もちろんラップして再利用化ぐらいしてるさ)。
0113デフォルトの名無しさんNGNG
>>112 このスレはもともと APIゴリゴリでDelphiを使おうというスレのようだった気がするんだが
01141NGNG
今ネタないので保守カキコ
0115デフォルトの名無しさんNGNG
GBAのエミュつくれる?
0116デフォルトの名無しさんNGNG
>>115
Delphiでも作れるよ。
でも何故わざわざここで聞くの?
0117デフォルトの名無しさんNGNG
エミュレータを作るのはコツを覚えれば簡単。
まぁ性能に関しては知識がいるんだけどな。
0118デフォルトの名無しさんNGNG
age
0119デフォルトの名無しさんNGNG
DelphiでMMOゲームって作れるのかなぁ。
0120デフォルトの名無しさんNGNG
>>119
作れる。以上。
0121デフォルトの名無しさんNGNG
>>120
正直今までObject Pascal見縊ってました。
0122デフォルトの名無しさんNGNG
>>121
というかVBのPascal版としか考えていなかったんだろ。
C++で出来ることの99%は出来るぞ。
0123デフォルトの名無しさんNGNG
>>119
こんなこと言っているやつは作れない。
所詮Delphiもそれだけの開発環境ということ。

VCなんかももちろん同じだが。
0124デフォルトの名無しさんNGNG
GDI+をDelphiから使うユニットを見つけたので紹介。(と同時に質問させていただきます)

http://www.progdigy.com/

SelectObjectとかCreateDIBSectionとか鬱になる旧GDIのAPIを使わずに済むので、
APIだけでコードを書く時は莫大なメリットになる思います。
しかしXP以外は最初からOSに入っていないという罠も…。
英語の読める人にお聞きしますが、gdiplus.dllって再配布可能ですか?
0125デフォルトの名無しさんNGNG
>>124
>GDI+をDelphiから使うユニット
そのままDLLで使えないの?
0126デフォルトの名無しさんNGNG
正直、DelはGUI部分だけにしたい。
0127124NGNG
書くの忘れてましたがgdiplus.dllはMicrosoftのDLLです。
XP以外ではMSのサイトから落としてくる必要があるのですが、これをアプリにくっつけて再配布できるか知りたいのです。
以下の辺りと思うのですが…。(添付のlicense.txtより抜粋)

* Distribution Terms. You may reproduce and distribute an unlimited number of copies of the Sample Code and/or
Redistributable Code (collectively "Redistributable Components") as described above in object code form, provided that (a)
you distribute the Redistributable Components only in conjunction with and as a part of your Application solely for use with a
Microsoft Operating System Product; (b) your Application adds significant and primary functionality to the Redistributable
Components; (c) you distribute your Application containing the Redistributable Components pursuant to an End-User License
Agreement (which may be "break-the-seal", "click-wrap" or signed), with terms no less protective than those contained herein;
(d) you do not permit further redistribution of the Redistributable Components by your end-user customers; (e) you do not use
Microsoft's name, logo, or trademarks to market your Application; (f) you include a valid copyright notice on your
Application; and (g) you agree to indemnify, hold harmless, and defend Microsoft from and against any claims or lawsuits,
including attorneys' fees, that arise or result from the use or distribution of your Application. Contact Microsoft for the
applicable licensing terms for all other uses and/or distribution of the Redistributable Components.

>>125
GDI+はC++型のクラスを用いる形なので、上記ユニットはNewInstanceをoverrideしてDelphiのクラスをGDI+のクラスとして振る舞わせてます。
0128デフォルトの名無しさんNGNG
124はまだ自分好みのwrapperクラスを(見つけ|作)ってないのか
0129デフォルトの名無しさんNGNG
>>127
それはEULAでしょ?再配布については記述されてない。
Redist.txtとか入ってなかったか?
もしくはEULAにRedistのセクションは無いのか?
0130デフォルトの名無しさんNGNG
>>124
こんなところで訊いて、yes or no の回答があったら信用するのか?
自分で訳せよ
0131デフォルトの名無しさんNGNG
試みとしては面白いけどVCL使わないDelphiなんて…

と今更逝ってみるテスト。
0132124NGNG
>>128
ラッパー作ってますよ…でも、よくある俺様ライブラリ(自分のも含めて)よりも、GDI+は高性能と思うので。
それに曲がりなりにもMicrosoft製というのも大きいです。.NETなんかでも同じモデルが使われているみたいですし。

>>130
はい…おっしゃる通りです…辞書と格闘することにします。
0133デフォルトの名無しさんNGNG
GDI+は高性能じゃないよ。
GDIベースのゲーム用ライブラリを使った方がよっぽど高性能
0134デフォルトの名無しさんNGNG
高性能というよりは高機能かね。
0135デフォルトの名無しさんNGNG
>>131
>試みとしては面白いけどVCL使わないDelphiなんて…

続きはなに?
0136デフォルトの名無しさんNGNG
>>135

131のようなのは45以降を読んでないのね。
わざわざ書き込んで何を主張しようとしているんだろう?
スレ違いの茶々を入れて何がおもしろいのかなぁ。
0137124NGNG
報告。全文を読んだわけではありませんが、アプリのローカルフォルダに入れて再配布できる…みたいです。

GDI+のアルファブレンディング、中でどうやっているのかと思えば、AlphaBlendなんてAPIが98以降存在している…
0138デフォルトの名無しさんNGNG
>>136
だから
>と今更逝ってみるテスト。
と書いてるんじゃないのか?
おまえこそ意味の無いレスをわざわざ書き込んでなにが面白いんだ?なにを主張しようとしてるんだ?
0139デフォルトの名無しさんNGNG
>>138
>>と今更逝ってみるテスト。
>と書いてるんじゃないのか?

だから何なんだ、ときいているのだよ?


0140136 だがNGNG
>>138
>なにを主張しようとしてるんだ?

131はすれ違いで迷惑だ、と主張している
138=131 なのか? 136 の質問に答えろよ
なにが言いたい?
0141デフォルトの名無しさんNGNG
>>140
個人の感想にいちいち突っかかるなよ・・・
0142デフォルトの名無しさんNGNG
>>141

個人の感想は136、突っかかってきたのが138、と見えるが?

以上、個人の感想でした。
0143デフォルトの名無しさんNGNG
記念式典age
0144デフォルトの名無しさんNGNG
保守age
0145デフォルトの名無しさんNGNG
sage
0146vokeNGNG
Del厨はしね
0147デフォルトの名無しさんNGNG
このスレは不死身だ
0148デフォルトの名無しさんNGNG
俺も不死身だ
0149vokeNGNG
Del厨はしねよ
0150vokeNGNG
Del厨はまじでしね
0151デフォルトの名無しさんNGNG
>>149-150
ageるなボケ
0152デフォルトの名無しさんNGNG
スマソ
0153デフォルトの名無しさんNGNG
小さな実効ファイル作るならアセンブラ(省略
0154デフォルトの名無しさんNGNG
>>153 あほ
スレタイをちゃんと読むように
0155デフォルトの名無しさんNGNG
インラインアセンブラでスタートアップコードから書き直し
0156デフォルトの名無しさん NGNG
良スレ保守
0157デフォルトの名無しさんNGNG
UPXを使うのはどうでしょう?。
実行ファイルがめちゃくちゃ小さくなりますよ。

スキルを磨くのは良いけれど、UPXは凄いよ。
0158デフォルトの名無しさんNGNG
UPX いらねー。
せいぜい起動が速くなることがある程度のメリットしかない。
0159Delフサギコ ◆zE1iiRdQ NGNG
UPXの使い方教えて....

        実は知らない.
   ∧,,∧   
  ,ミ ゚Д゚彡
  ミ  ∪  
 ミ〜,, ミ
  ∪ ∪
0160デフォルトの名無しさんNGNG
>>159
http://urikire.hypermart.net/UPXF.htm
フロントエンド使えタコ
0161vokeNGNG
Del厨しねよ
0162デフォルトの名無しさんNGNG
>>157
APIで組んで、UPXに食わす。さらに小さくなり(゚Д゚)ウマー
総行数6万行280KByte → 約100KByteとか。

>>159
最高に圧縮品質を高める設定なら
upx --best *.exe

あとはupx --helpでもしる!!
0163デフォルトの名無しさんNGNG
UPX を使えば実行ファイルが小さくなる → だからなんなんだ
Delphi とは無関係だと思うけど?
0164デフォルトの名無しさんNGNG
>>163
まぁ、今となってはありがたみはあまり無いね。
でも、ウインドウ一つ、strcopy()一つで100KBと言うのは誰でも一度はナンセンスだと感じたはず。
0165デフォルトの名無しさんNGNG
>>164
>誰でも一度はナンセンスだと感じたはず。

でもそのうちフォーム一枚で300kbになっても、どうでもよく
なるんだよね。こういう感覚は、自分は「便利さ」を優先しているので
VCLつかうのは仕方がない、という一種の諦めではあるんね。
01661NGNG
// クリップボードへのテキストコピーです

procedure toClip(const s:string);
var size:Integer;
var dh: THandle;
var dt:PChar;
begin
size:=Length(s)+1;
    EmptyClipboard;
   OpenClipBoard(0);
 try
  dh := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, size);
  try
   dt := GlobalLock(dh);
   try
    Move(PChar(s)^, dt^, size);
    SetClipboardData(CF_TEXT, dh);
   finally
    GlobalUnlock(dh);
   end;
  except
   GlobalFree(dh); //エラー時のみ
  end;
 finally CloseClipboard; end;
end;
01671NGNG
>>166  EmptyClipboard; と OpenClipBoard(0);  の順番が逆でした
これを使ってこんなのを作ってみました。
program Bin2Byte;
uses Windows,SysUtils;
// >>166の修正してコピペ
function readFileStr(fname:string):string;
var hin:THandle;
var rsize:DWORD;
begin
result:='';
hin:=CreateFile(PChar(fname),GENERIC_READ,FILE_SHARE_READ ,nil,OPEN_EXISTING
,FILE_ATTRIBUTE_NORMAL,0);
if hin<>0 then try
SetLength(Result, GetFileSize(hin, nil));
 ReadFile(hin,PChar(Result)^,Length(Result),rsize , nil);
finally CloseHandle(hin);
end
end;
function getWin32Find(const fname:string):TWin32FindData;
var h:THandle;
begin
  h:=FindFirstFile(PChar(fname),Result);
  if h = INVALID_HANDLE_VALUE then begin
   Result.cFileName[0]:=#0;
  end else Windows.FindClose(h);
end;
var buf,s,c0,wk,fname:string;
var i,n,siz,bufc:Integer;
procedure puts(s:string);
var i:Integer;
begin
 for i:=1 to Length(s) do begin buf[bufc+1]:=s[i];inc(bufc);end;
end;
begin
 if ParamCount<1 then exit;
 fname:=ParamStr(1);
 with getWin32Find(fname) do begin
 if cFileName='' then exit;
  s:=cFileName;
  end;
  for i:=1 to Length(s) do if s[i]='.' then s[i]:='_';
  bufc:=0;
  wk:=readFileStr(fname);
  siz:=Length(wk);
 SetLength(buf,siz*4+(siz div 4)+length(s)+1000);
 puts('const '); puts(s);puts(':array[0..'+IntToStr(siz-1)+'] of byte='#13#10);
  n:=0;
  c0:='($';
  while n<siz do begin
  for i:=0 to 15 do if(n<siz) then
   begin puts(c0+IntToHex(ord(wk[n+1]),2));inc(n);c0:=',$';end;
   puts(#13#10);
  end;
  puts(');'#13#10);
  SetLength(buf,bufc);
  toClip(buf);
end.
01681NGNG
>>167 を ファイル名を引数にして実行すると
例 Bin2Byte Bin2Byte.exe

実行結果

const =Bin2Byte_exe:array[0..43519]=
($4D,$5A,$50,$00,$02,$00,$00,$00,$04,$00,$0F,$00,$FF,$FF,$00,$00
,$B8,$00,$00,$00,$00,$00,$00,$00,$40,$00,$1A,$00,$00,$00,$00,$00
 ・・・・ 略・・・・
);

 というようなのがクリップボードに入ります。
 これを使えばバイナリファイルをリソースではなく直接ソースに埋め込めます

取り出す時のコードは

function writeFileBin(fname:string;data:array of byte):boolean;
var hout:THandle;
var wsize:DWORD;
begin
result:=false;
 hout:=CreateFile(PChar(fname),GENERIC_WRITE,0,nil,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if hout<>0 then try
  if WriteFile(hout,data,Length(data),wsize,nil) then
   result:=wsize=DWORD(Length(data));
 finally CloseHandle(hout);
 end
end;
01691NGNG
ちなみに >>167 のコードは D5で43,519byte

これはまだ工夫すると半分に出来ます。
SysUtils を外して、IntToHex IntToStrの2つを自作に置き換えれば
19,455Byteとなりました
0170デルファイの名無しさんNGNG
D6では40,448でした。拍手age
0171デフォルトの名無しさんNGNG
age
0172デフォルトの名無しさんNGNG
ほしゅ
0173デフォルトの名無しさんNGNG
hello,world対決
Delphi6 16,384バイト
C# 3072バイト
よって
C#>>>>>>>>>>>>>>Delphi
0174デフォルトの名無しさんNGNG
Perl 20バイト
よって
Perl>>>>>>>>>>>>>>>>>>>>>C#>>>>>>>>>>>>>>Delphi
0175デフォルトの名無しさんNGNG
Ruby15バイト
よって
Ruby>>>>>>Perl>>>>>>>>>>>>>>>>>>>>>C#>>>>>>>>>>>>>>Delphi
0176デフォルトの名無しさんNGNG
Cだと1,344バイトだった。
スタートアップルーチンなどは勿論デフォルトの物で。

cl -MD hello.c -link -merge:.data=.text -merge:.rdata=.text -align:64

#include <stdio.h>
main()
{
 printf("Hello, World!\n");
}
0177デフォルトの名無しさんNGNG
バイナリエディタで500Byteちょっとかな。

よって
バイナリエディタ>>>>>>>>>>>>C#>>>>>>>>>>>>>>Delphi
0178デルファイの名無しさんNGNG
>173
Delphi6 9,216 バイトでしたが。
小さくしたいならuses SysUtilsは消しましょう。

ついでにC#と近い条件にするため実行時パッケージを使うと4,096。
負けてはいるけど">"14個も大袈裟かな…
0179デルファイの名無しさんNGNG
KOL版System.dcu使って6,656…Delphiだとこの辺が限界みたいです。
0180デフォルトの名無しさんNGNG
こうすれば 実行時パッケージなしで 8192バイトになるよ

program Hello;
uses
Windows;
const helloStr='Hello, World'#13#10;
var putSize:DWORD;
var buf:array [0..100] of char;
begin

AllocConsole;
WriteConsole(
GetStdHandle(STD_OUTPUT_HANDLE)
, pChar(helloStr),length(HelloStr),putSize,nil);

ReadConsole(
GetStdHandle(STD_INPUT_HANDLE)
, @buf,High(buf)-1,putSize,nil);

end.

実行ファイルのサイズは1024の倍数になる様子
0181デフォルトの名無しさんNGNG
普通は4kbの倍数のはず
0182デフォルトの名無しさんNGNG
普通は1bの倍数のはず
0183デフォルトの名無しさんNGNG
>>182はほっといて
Borlandのリンカにはファイルアライメントを調整するオプションはないの?
0184デルファイの名無しさんNGNG
確かにどんなファイルでも1bの倍数ですねってのはほっといて、

普通にコンパイルすると.dprに関しては中間ファイルが作られず直接exeになってしまいますが
dcc32 -J でコンパイルすると.objができたので、これをilink32に渡して…

…誰かこの先を教えて下さい。
0185デルファイの名無しさんNGNG
難点として、dcc32には-linkみたいなオプションをリンカに渡すためのものが無いのですね。
ilink32には一応-Afとか-Aoなどあるみたいですが。
0186デフォルトの名無しさんNGNG
Win9xで動かすタメにはAf:4096 Ao:任意で良いと思う
NT系ならAf:16 Ao:任意。
0187デフォルトの名無しさんNGNG
どうしても 他より小さな実行ファイルを作りたいなら DCUを解析して
自分でEXEを作るしかないと思う。
 ただし、WinAPIしか使わない前提で、かつImport情報とリロケート
情報をちゃんと作らなければならないのが難点だけど・・・

でも、チラっとみた感じ、Importに必要な情報は入ってるようす
リロケート情報は判らない
0188デフォルトの名無しさんNGNG
>>185
bcc32には -l というオプションがありますけど
dcc32にはないのですか?
>>186
Win9xでも-Af:512でOKです。
Win95までは-Af:512でした。
0189デフォルトの名無しさんNGNG
DCC32は コンパイラ+アセンブラ+リンカ+リソースコンパイラ+リソースリンカ
0190デフォルトの名無しさんNGNG
リンクまで自前でしちゃうからリンカにオプションを渡すような
オプションは存在しないってこと?
0191デフォルトの名無しさんNGNG
保全・・・
サゲ進行だと誰も気づいてくれないような・・・
0192デフォルトの名無しさんNGNG
保守
0193Delフサギコ ◆VzDeLphI NGNG
          ____
     ΛΛ.   ||:::::::::::||
    ミ   ミ―||:::::::::::||―――
    ミ   つ二二lニl 且
 =@ | ̄ ̄|__ミ―――――
   `ー┬‐'' アスタから仕事ですねー
     ┴

SysUtilsを使いたくなくて
ByteTypeを自分で実装しようとおもうますた。

ByteTypeを自分で実装しようとすると
IsDBCSLeadByte APIを使ったり
どなたかが作った
IsDBCSLeadChar 関数を使うとよさそうですが

どうも変な挙動が出て困ってます。


procedure Check(A, B: Variant);
begin
 if A <> B then
 begin
  Assert(False, 'エラー')
// raise Exception.Create('エラー');
 end;
end;

  function IsDBCSLeadChar(c:char):boolean;
  begin
   Result:=c in [#$81..#$9f,#$E0..#$fc]
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Check(True, IsDBCSLeadChar( ('る'[1]) ));
 Check(True, IsDBCSLeadChar( ('る'[2]) ));

 Check(True, IsDBCSLeadChar( ('あ'[1]) ));
 Check(False, IsDBCSLeadChar( ('あ'[2]) ));


 Check(True, IsDBCSLeadByte( Byte('る'[1]) ));
 Check(True, IsDBCSLeadByte( Byte('る'[2]) ));

 Check(True, IsDBCSLeadByte( Byte('あ'[1]) ));
 Check(False, IsDBCSLeadByte( Byte('あ'[2]) ));
end;

このプログラムでテストが通るのですが
なんで"る"と"あ"で挙動が違うのでしょうか?
"る"の2バイト目にはなぞな何かがあるんでしょうか?
0194デフォルトの名無しさんNGNG
ハァハァ・・・
Delフサのあのモサモサした身体に後ろから抱きつきたい。
モサモサ体を弄りたい(・∀・)!
0195Delフサギコ ◆VzDeLphI NGNG
          ____
     .ΛΛ.   ||:::::::::::||
―――ミ;゚Д゚ミ―||:::::::::::||――キタ――
    ミ   つ二二lニl 且
   | ̄ ̄|__ミ―――――
   `ー┬‐''
     ┴
0196ねこまNGNG
あ = $82A0
る = $82E9
0197デフォルトの名無しさんNGNG
#include <stdio.h>

main() {
 char buf1[]="る";
 char buf2[]="あ";
 printf("%s : %2x | %x\n", buf1, buf1[0], buf1[1]);
 printf("%s : %2x | %x\n", buf2, buf2[0], buf2[1]);
}

る : 82 | e9
あ : 82 | a0

あ の場合範囲外
る の場合範囲内

よくわからんが・・・。
0198Delフサギコ ◆VzDeLphI NGNG
          ____
     .ΛΛ.   ||:::::::::::||
―――ミ;゚Д゚ミ―||:::::::::::||―オシエテモラタ―
    ミ   つ二二lニl 且
   | ̄ ̄|__ミ―――――
   `ー┬‐''
     ┴
0199Delフサギコ ◆VzDeLphI NGNG
          ____
     .ΛΛ.   ||:::::::::::||
―――ミ;゚Д゚ミ―||:::::::::::||―オシエテモラタ―
    ミ   つ二二lニl 且
   | ̄ ̄|__ミ―――――
   `ー┬‐''
     ┴
つまり、APIが主っきりバグってると??

IsDBCSLeadByteがニポンゴの1バイト目発見のための
関数だとすると
普通に考えたら
  function IsDBCSLeadChar(c:char):boolean;
  begin
   Result:=c in [#$81..#$9f]
  end;
これじゃだめなのですか?

SJISの仕様とか知らべる気力もないんですが,,,

SysUtilsの20KB増がいやだから
単にByteTypeを作りたいだけなのに、、、
0200Delフサギコ ◆VzDeLphI NGNG
        にひゃく
    ∧,,∧  茶どうぞ
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~) 
0201デフォルトの名無しさんNGNG
ttp://www.unixuser.org/~euske/doc/kanjicode/
ここの読んでみるといいかもです。

S_Jisのコードの割り当て方が詳しく乗ってますです。
0202デフォルトの名無しさんNGNG
~旦⊂(・∀・)ドウモ!
0203ねこまNGNG
何が知りたいのか,ようやくわかった.
SJIS の LeadByte をピンポイントで正格に知る方法は無いよ(ね!?)
0204ねこまNGNG
まちがいた
LeadByte じゃなくて2バイト目
0205デフォルトの名無しさんNGNG
よくわからんが、1バイト目読んで2バイト文字の1バイトめであれば
次のバイトはすっ飛ばすかなんかしなきゃあかんとおモイまう。

S-JIS にぽんごが1バイト目にとるであろう範囲
半角かな 1 バイト文字 0xA0〜0xDF
全角文字 2 バイト文字 0x81〜0x9F 0xE0〜0xFF

っでいいのかな?
0206ねこまNGNG
つーか別にまちがいてないか
0207Delフサギコ ◆VzDeLphI NGNG
 ∩| 
 ミ ゙''゙゙゙つ    ________
 ミ∧,,∧   /
 ミ,,゚Д゚彡 < SysUtils.ByteTypeはみたいでつ
 U U    \
           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ソースコピペしてもちゃんと動かないので
やっかいなのだ。
0208Delフサギコ ◆VzDeLphI NGNG
 ∩| 
 ミ ゙''゙゙゙つ    ________
 ミ∧,,∧   /
 ミ,,゚Д゚彡 < はみタイツじゃなくて・・・
 U U    \
           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SysUtils.ByteTypeは
2バイト目のお知らせが正確みたいでつ。

と書きそこねですた
0209ねこまNGNG
>SysUtils.ByteTypeは
>2バイト目のお知らせが正確みたいでつ。
正確でなくては困ります.
「ピンポイントで」と言ったのは,1バイトの情報だけでという意味です.
すべては SysUtils.ByteTypeTest を通されます.

おやすみなさい.
0210デフォルトの名無しさんNGNG
ByteType が2バイト文字の2バイト目と判断する文字コード

$000〜#255の間でチェック

130, 132, 134, 136, 138, 140, 142, 144, 146,
148, 150, 152, 154, 156, 158, 160, 225, 227,
229, 231, 233, 235, 237, 239, 241, 243, 245,
247, 249, 251, 253

でも、この範囲外のコードを持つ2バイト文字もあると思うので
2バイト目だけで正確な判断は無理かと・・・。
0211デルファイの名無しさんNGNG
>>199
仕様すら調べもせずバグ疑惑ですか…
他のスレの話題を混ぜる(蒸し返す)ことになり、また僕程度がこんな事を言うのは大変失礼ですが、
Delフサギコさんを満足させるライブラリは無い予感。

>>207
SysUtilsからソースコピペしても動かないのは、LeadBytes変数が設定されていないと予想。
初期化部分も持って来るか、そこだけIsDBCSLeadByteに書き換えれば動くかと。

それと、言語設定がS-JIS以外の時も考慮するなら、
(>>193のIsDBCSLeadCharのように数値を埋めこまずに)
IsDBCSLeadByte APIとかCharNext APIとかを使うべきです。
0212デフォルトの名無しさんNGNG
他に sysUtils.LeadBytes ; set of Char = []; を使う方法もあるよ
この初期化してる部分を参考にするといい
0213Delフサギコ ◆VzDeLphI NGNG
>Delフサギコさんを満足させるライブラリは無い予感。
   _____________
 /
 | ?ハァ?
 | SysUtils.ByteTypeと同仕様で軽量
 | って仕様なライブラリは無いのでつか?
 \_ ____________
    |/
   ∧,,∧
  ミ,,゚Д゚ミy━~~
   U   ミ
 〜ミ   ミ
   ∪''∪
>IsDBCSLeadByte APIとかCharNext APIとかを使うべきです。
べきとか、そういうのはどうでもいいのですが
とりあえず、今の所中身がわからなきゃ調査に困るです。

>仕様すら調べもせずバグ疑惑ですか…
>>193をみて、IsDBCSLeadByteが正しいと思えるですか?
名前からして、'る'の2バイト目にヒットすると誰が思う?
誰もが'る'の2バイト目にもTrueを返すと思える?
0214デルファイの名無しさんNGNG
いやま、第1段落はつまらない一般論です。
http://pc3.2ch.net/test/read.cgi/tech/1027343132/635 でも、ライブラリの充実を訴えてますが、
こんな程度で文句を言うようでは、どんなに高機能でいい設計のライブラリでも
満足できないんじゃ無いかなあ…と思えてしまって。失礼しました。
当然SysUtilsの外でByteTypeは実装できる筈(汗

で、SHIFT-JISですが、

IsDBCSLeadBytesは、文字どおりLeadBytesかどうかを判断する関数であって、
2バイト目についてどうにかする関数じゃ無いですね。
というか、1バイトだけの情報でそこまで求めるならば、
1バイト目と2バイト目の範囲が重なるコード体系は全滅ですよ。
マルチバイト文字列を扱う時は、先頭から走査していかないと何処までが1文字なのか区切りがつかないのは
文字列処理のセオリーというか、Delフサギコさんが知らなかった事の方が驚きというか。
とりあえず、漢字混じりのテキストファイルをバイナリエディタでいじってみる事を推奨。
0215デフォルトの名無しさんNGNG
第2バイトでないかというのは
 途中から検査したい時は 第2バイトにもならないコードを探して、そこから戻って
 検索する事で処理を高速にする為に必要なのです
0216デルファイの名無しさんNGNG
そういえばIsDBCSTrailBytesなんてAPIはざっと見た限り無いですねぇ。
じゃ、便乗質問していいですか?
1バイト目の集合はGetCPInfoでいいとして、DBCSの2バイト目の集合はどうやって求めればいいでしょうか?
0217デフォルトの名無しさんNGNG
>マルチバイト文字列を扱う時は、先頭から走査していかないと何処までが1文字なのか区切りがつかないのは
>文字列処理のセオリーというか、

UNICDOE で上から下までかける現在の Windows 開発環境ではちょっと言い過ぎだね。
廃れかけている古い技術をあまり大声で言うもんじゃない。
0218デフォルトの名無しさんNGNG
>>216 そういやどうなんだろ?他の国では第2バイトは日本と同じなのかどうか興味あるね

>>217 そうなんだけど DelphiはTurboPascalの昔からShiftJISだったからさ
0219デフォルトの名無しさんNGNG
> 廃れかけている古い技術をあまり大声で言うもんじゃない。

なぁーに言ってるんだか。
現在の Delphi についてでしょ。

> 先頭から走査していかないと

これが重要なんだってば!
0220デフォルトの名無しさんNGNG
どうでもいいけどSysUtils.ByteTypeだとどうして
2バイト目も判定できるの?
0221デフォルトの名無しさんNGNG
指定された文字より前の文字も調べてる。
0222デルファイの名無しさんNGNG
皆さんどうもです。やっぱ、2バイト目を求めるAPIは無いのでしょうか。

>>217
UTF-8も、2バイト目と3バイト目が重なる時ありませんでしたっけ?気のせいかな。
0223デフォルトの名無しさんNGNG
          ____
     ΛΛ.   ||:::::::::::||
    ミ   ミ―||:::::::::::||―――
    ミ   つ二二lニl 且
   | ̄ ̄|__ミ―――――
   `ー┬‐'' うまく動かないなー
     ┴
          ____
     .ΛΛ.   ||:::::::::::||
―――ミ ゚Д゚ミ―||:::::::::::||――
    ミ   つ二二lニl 且
   | ̄ ̄|__ミ―――――
   `ー┬‐'' APIのバグだねこれ
     ┴
0224デフォルトの名無しさんNGNG
> やっぱ、2バイト目を求めるAPIは無いのでしょうか。

チャント流れ読んでる? 1バイト目が確定するなら
なんで2バイト目を取得する必要があるの?
0225デルファイの名無しさんNGNG
流れって…俺214=216=222ですよぉ。
215の指摘を受けて、そのテクニックを(言語を問わず)使うために、216で便乗質問したのですが。
0226デフォルトの名無しさんNGNG
いやだから

>>216
>1バイト目の集合はGetCPInfoでいいとして、DBCSの2バイト目の集合はどうやって求めればいいでしょうか?

でしょ? 1バイト目が確定することを仮定しておいて、2バイト目
を議論するのはどういうことよ。1バイト目 LeadingByte なら
その次は DBCS の2バイト目であることは定義より明らかでしょ
0227デルファイの名無しさんNGNG
215読んでます?
長い長い文字列で、現在位置が最後の方だった時、一々先頭から全部走査するのを避けるため、
後ろから、絶対2バイト目にはならないコードを探して、そこから普通に走査開始!
というテクニックと解釈しましたが。
0228デフォルトの名無しさんNGNG
>>227

222 では > 2バイト目を求めるAPIは無いのでしょうか。

と書いてるじゃないの。2バイト目を求めるのと、
「絶対2バイト目にはならないコード」を求めるのとは
同等じゃないぞ
0229Delフサギコ ◆VzDeLphI NGNG
  ∧,,∧ ──────
 ミ゚Д゚,,彡 < 忙しすぎて、
 ⊂⊂ ミ──────
    ヾ ,,ミ〜 ────
     し じ ─────
            _____________
____∧ ∧_ /
___ミ,,゚Д゚ミ< レスも終えなくてスマソー
__ ミ ⊃ つ  \______________
_〜ミ,, ,,〃
_ ∪ ∪

>>214さん、そう、俺はVCLでも満足できません。
より高機能でいい設計のライブラリを求めてしまう。
楽をしたいから、いいライブラリに飛びつきたいのれす。
楽をしたいのは技術者として大切だと思うんですが,,,,

というか、TMemoにUndoが実装されてないのを
自然だと思えるセンスは俺にはないです。あからさまに不自然ぢやない?

ピンポイントで調べるのではなくて
ByteType関数と同じ仕様で文字列とIndexをわたしたら
そこが2バイト目かどうかを調べる。<<これはピンポイントではないですよね。
これはできると思うんだけど・・・

なんにせよ、
SysUtilsをusesした時の20KB増が嫌ってだけなんですけど、
このスレむきな話題かと重いますた。

>>223
仕様とバグは紙一重かも。

>>201タンのリンク先を目が節穴になるほど、みると
わかるのかな。
http://www.unixuser.org/~euske/doc/kanjicode/sjistab.gif
この図が重要だと思うてるんですが,,,,


0230デフォルトの名無しさんNGNG
>229
ttp://tohoho.wakusei.ne.jp/wwwkanji.htm#Map
この図も面白げです。
0231デフォルトの名無しさんNGNG
> TMemoにUndoが実装されてないのを

TMemo には Undo メソッドがあるよ
0232デフォルトの名無しさんNGNG
> ピンポイントで調べるのではなくて
> ByteType関数と同じ仕様で文字列とIndexをわたしたら
> そこが2バイト目かどうかを調べる。<<これはピンポイントではないですよね。
> これはできると思うんだけど・・・

文頭から調べる! 何度言った分かりますか。

> ByteType関数と同じ仕様

こんな関数簡単につくれるだろうに....
0233Delフサギコ ◆VzDeLphI NGNG
     ______
      | CLXの    |
      |  TMemoす  |
      |______|  _____
      ∧,,∧.||__   /
    /ミ,゚Д゚ Φ/\< 死ってびっくり
  /| ̄∪ ̄ ̄|\/  \ミてびくり。
    |____|/      ̄ ̄ ̄ ̄ ̄

D7Pro以上お餅の方は
http://software.nikkeibp.co.jp/software/download/0209/klx0209.zip
ダウソしてUndoの実装みてみそ
CLXじゃなくてQTのAPI(?)関数コールしてます。
0234Delフサギコ ◆VzDeLphI NGNG
                _____
      ∧,,∧___   /文頭から調べるのは遅いと
    /ミ,,゚Д゚ミ/\<  思われなんだけど,,,,,
  /| ̄∪∪ ̄|\/ \_____
    |____|/
    作るヒマないって逝ってるのに,,,
    もうちょっと考えさせてって。

    (というか、簡単につくれるだろうに、って言うなら
     作ってくれんですか?面倒なのなら"簡単に"なんて使うな)
0235デフォルトの名無しさんNGNG
より良いものを求める姿勢は確かに重要だけどさー、
ByteType程度自分で作れない奴が言うなよー、みたいなー。

「自分は何もしたく無いから、何でもかんでもライブラリで実装してくれ。理解できない仕様はバグね」としか読めん。

特にこのスレだと、(Systemユニット以外は)一切使わず全部自前で実装して省サイズって
流れでもいいと思う。
0236デフォルトの名無しさんNGNG
D7Pro ってもう出てるのか。知らんかった

> CLXじゃなくてQTのAPI(?)関数コールしてます。

見てないけど、Windows と QT のエディットコントロールの実装の差じゃ
ないのですか。VCL とか CLX とかのライブラリがどうの、ということじゃなく
0237デフォルトの名無しさんNGNG
> 面倒なのなら"簡単に"なんて使うな

ソースみたらほとんどコピペでできると思うよ。
0238デフォルトの名無しさんNGNG
>>234
>>211の第2段落
0239デフォルトの名無しさんNGNG
>>223
お前の頭のバグ
0240Delフサギコ ◆VzDeLphI NGNG
      ∧,,∧l||l  ハァ...なんだか...
       ;゙⌒ヽ彡  
     〜ミ___ミ
    ''" ""''"" "''
>ByteType程度自分で作れない奴が言うなよー、みたいなー。
「作れないヤシがいうなよー」なら、
作れるやつだけで高尚な会話しとけ。
(つか、小難しい事を小難しくしか説明でけないヤツは
 本当には理解してないと表るから、いいよ別に
 難しい事を難しく話して、どうぞ。
 それに"その程度"ってなら、さっさと作ればいいでしょ?)

>理解できない仕様はバグね
バグかしら、と疑う事と、バグだと断定することには
ずいぶんと差があるのだけど、そのことわかってる?

>「自分は何もしたく無いから、何でもかんでもライブラリで実装してくれ。理解できない仕様はバグね」
オレが作りたいのはソフトウェアの機能であって
ライブラリを自分で実装するのはあまりキボンヌではないです。

>>236
もしかしたら、QTのUndo機能呼び出しがWinとLinuxで違うから
あえて別実装なのかも?
でも、CLXがQT.pasを読めない初心者向けに作られている
優れたライブラリとは、ちょっといえない気がするです。
0241デフォルトの名無しさんNGNG
>それに"その程度"ってなら、さっさと作ればいいでしょ?)
>ライブラリを自分で実装するのはあまりキボンヌではないです。

答えはもう211の第2段落で出ているし、難しく無い説明も何度も出ているので、
それすらやりたくない/理解するのが面倒/作ってくれ、としか読めませんが。

>バグかしら、と疑う事と、バグだと断定することには
>ずいぶんと差があるのだけど、そのことわかってる?

自分が勘違いしているかどうか疑うよりも先に他人を疑うのも、どっか変ですね。
0242 NGNG
>>229
> 楽をしたいのは技術者として大切だと思うんですが,,,,
てか、お前技術者じゃないじゃん。
0243ねこまNGNG
随分ごちゃごちゃしたスレになりましたね……

>>209 で言った SysUtils.ByteTypeTest はまさに
>>215 を実装したものです.
よって,わざわざ作る必要性がありません.
0244デルファイの名無しさんNGNG
>>243
なるほど!

ソース読んで紙に書いて理解しました。
Leadじゃない→Trail or Single→その次の文字はLead or Singleという理屈なわけですね。
2バイト目になり得るコードの集合がわからなくても、戻る方法は実装可能でしたか…。
僕もひとつ勉強になりました。
0245デフォルトの名無しさんNGNG
>>244
で、そのコードは DBCS / 2バイトシステムでしか動かないわけだな。
UTF-8 / 通常は 1-3 バイトのシステムで破綻する。
0246 NGNG
>>245
UTF-8なら、少なくとも1バイト目かどうかは一発で分かるんだから、
別にいいんじゃねーの?
0247デフォルトの名無しさんNGNG
>>242
楽をするために最大限の努力をするのが技術者だと思っているが……
まあ、そういう意味でもDelギコはもうちょっとガンバレやとしか言えんか。
0248デフォルトの名無しさんNGNG
Delフサ→Delギコ化スレになりますた。
0249デフォルトの名無しさんNGNG
>Leadじゃない→Trail or Single→その次の文字はLead or Singleという理屈

UTF-8 だと
Leadじゃない→Trail or Single→その次の文字はまだ Trail かもしれない。
ってことで終わり。

もちろん、UTF-8 だと Lead か Trail か直接判断できるので問題は無いんだけど
同じコードを使いまわすことはできない。
0250デルファイの名無しさんNGNG
DBCSの時の話なんですけど。

2バイト目の集合を取得するAPIは無いなあ→
その場合言語設定を問わずに「戻る」テクニックを使うにはどうすればいいのだろう→
244で書いた方法、というわけです。

UTF-8なら言語設定関係ないので、直接UTF-8専用のコードを使うと思います。
0251デフォルトの名無しさんNGNG
というかそもそも UTF-8は移動用の形式であって作業用の形式じゃない
SJISの場合に、たとえばマウスで矩形選択した文字をひらいたいような場合
先頭から検索すればいいんだけど、それより高速にする方法は無いかとい
う事でしょ?
 今だとそんな工夫も必要無いくらいパソコンは高速なんだけどね
0252Delフサギコ ◆VzDeLphI NGNG
           ____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < とりあえず、できますた
   U  つ∀ \
 〜ミ  ミ ┴    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ 思いっきり
SysUtils.BytetypeTestと同じやんけ....
              (犬阪弁)

  function IsDBCSLeadChar(c:char):boolean;
  begin
   Result:=c in [#$81..#$9F,#$E0..#$FC]
  end;
  
  function ByteType(const S: string; Index: Integer): TMbcsByteType;
  var
   i: Integer;
   SingleIndex: Integer;
  begin
   if Index = 1 then
   begin
    if IsDBCSLeadChar(S[Index]) then
    begin
     Result := mbLeadByte;
    end else
    begin
     Result := mbSingleByte;
    end;
   end else
   begin
    Result := mbSingleByte;

    i := Index-1;
    while IsDBCSLeadChar(S[i]) do
    begin
     Dec(i);
     if i = 0 then break;
    end;
    if Odd(Index - i) then
    begin
     if IsDBCSLeadChar(S[Index]) then
     begin
      Result := mbLeadByte;
     end else
     begin
      Result := mbSingleByte;
     end;
    end else
    begin
     Result := mbTrailByte;
    end;
   end;
  end;
0253Delフサギコ ◆VzDeLphI NGNG
  ∧,,∧
 ミ,,゚Д゚ミつテストはこれでしますた。
  とりあえず、EmEditorPluginで
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1006076016
ここのソースが正常に動作しているので問題ないかと思われです。

  procedure testByteType;
  begin
   Check(True, IsDBCSLeadChar( ('る'[1]) ));
   Check(True, IsDBCSLeadChar( ('る'[2]) ));

   Check(True, IsDBCSLeadChar( ('あ'[1]) ));
   Check(False, IsDBCSLeadChar( ('あ'[2]) ));

   Check(mbSingleByte, ByteType('ABC', 1));
   Check(mbLeadByte, ByteType('あ', 1));
   Check(mbTrailByte, ByteType('あ', 2));
   Check(mbLeadByte, ByteType('る', 1));
   Check(mbTrailByte, ByteType('る', 2));
   Check(mbLeadByte, ByteType('ああああ', 1));
   Check(mbTrailByte, ByteType('ああああ', 2));
   Check(mbLeadByte, ByteType('ああああ', 3));
   Check(mbTrailByte, ByteType('ああああ', 4));
   Check(mbLeadByte, ByteType('ああああ', 5));
   Check(mbTrailByte, ByteType('ああああ', 6));
   Check(mbLeadByte, ByteType('ああああ', 7));
   Check(mbTrailByte, ByteType('ああああ', 8));
   Check(mbLeadByte, ByteType('るるるる', 1));
   Check(mbTrailByte, ByteType('るるるる', 2));
   Check(mbLeadByte, ByteType('るるるる', 3));
   Check(mbTrailByte, ByteType('るるるる', 4));
   Check(mbLeadByte, ByteType('るるるる', 5));
   Check(mbTrailByte, ByteType('るるるる', 6));
   Check(mbLeadByte, ByteType('るるるる', 7));
   Check(mbTrailByte, ByteType('るるるる', 8));

   Check(mbLeadByte, ByteType('ABCああああ', 4));
   Check(mbTrailByte, ByteType('ABCああああ', 5));
   Check(mbLeadByte, ByteType('ABCああああ', 6));
   Check(mbTrailByte, ByteType('ABCああああ', 7));
   Check(mbLeadByte, ByteType('ABCああああ', 8));
   Check(mbTrailByte, ByteType('ABCああああ', 9));
   Check(mbLeadByte, ByteType('ABCああああ', 10));
   Check(mbTrailByte, ByteType('ABCああああ', 11));
   Check(mbLeadByte, ByteType('ABCるるるる', 4));
   Check(mbTrailByte, ByteType('ABCるるるる', 5));
   Check(mbLeadByte, ByteType('ABCるるるる', 6));
   Check(mbTrailByte, ByteType('ABCるるるる', 7));
   Check(mbLeadByte, ByteType('ABCるるるる', 8));
   Check(mbTrailByte, ByteType('ABCるるるる', 9));
   Check(mbLeadByte, ByteType('ABCるるるる', 10));
   Check(mbTrailByte, ByteType('ABCるるるる', 11));
  end;
0254デフォルトの名無しさんNGNG
はじめからコピペで済んだのね
アホらし
0255デフォルトの名無しさんNGNG
ほしゅ
0256デフォルトの名無しさんNGNG
このスレじゃなかったのかなあ・・・前にパッケージのインストールで
binフォルダにある何かを入れたら パレットにCPU タブが出て
メモリのダンプとか何のコードも書かなくても出来た記憶があるんだけど

そのパッケージの名前を忘れてしまった・・その時嬉しくなって2CHで報告した記憶があるんだけど
0257デフォルトの名無しさんNGNG
>>256
俺もDel6Personalでできた記憶がある。
Personalなのにダイアグラムが使えるようになったりもした。
再インストしたらできなくなったけど。
0258C言語マンセーNGNG
Del房うざい。
小さいバイナリ作りたきゃC言語でも使えよ。
DelphiのいいとこはD&Dでフォーム作って
最速コンパイル(ここまで数分)だろ?
多少サイズがでかくてもいいじゃねえか。
なんで不得意なことするの?
0259デフォルトの名無しさんNGNG
うざいというなら読むな。あほ。
0260デフォルトの名無しさんNGNG
>>259
厨房お得意の台詞
0261デフォルトの名無しさんNGNG
> んで不得意なことするの?
不得意じゃないからです。
手間という点で言えば、C言語と同等かそれ以下(OOPLである点を考慮して)
0262デフォルトの名無しさんNGNG
それはそれとしてあなたなんでageてるんですか(藁
それと多少サイズがデカクナッテモいいじゃないかってのは同意。
最近どうでもよくなってきた。
0263C言語マンセーNGNG
ごめんね
0264デフォルトの名無しさんNGNG
Delphi自体より、Pascal言語が好き。
だからDelphi開発環境に頼るだけじゃない、こういうスレは勉強になる。
0265デフォルトの名無しさんNGNG
procedure TForm1.Button12Click(Sender: TObject);
begin
button13.Enabled:=true
button26.Visible:=true
button1.Visible:=false
end;
---
↑これ、なんかおかしい?
エラーが出るけど。
0266デフォルトの名無しさんNGNG
>>265
スレ違いでエラーメッセージも書いてない、お前がおかしい。











セミコロンが抜けてるのは写し間違いか?
0267デフォルトの名無しさんNGNG
保守
0268デフォルトの名無しさんNGNG
>>265
ワラタ
しかもスレ違い。
0269デフォルトの名無しさんNGNG
どうでもいいけどSysUtils.ByteTypeだとどうして
2バイト目も判定できるの?
0270Delフサギコ ◆A6VzDeLphI NGNG
        ∬           ∬   前方のバイトも見てるから
        。。 ・・Λ〜Λ  ・。。。 ∬   かと.
     o0o゚゚   ミ*゚Д゚,,彡   ゚゚oo
    。oO  ( (( ー----‐ )) )   O0o
   (~~)ヽ             (´^ヽO,
  (⌒ヽ             (⌒)(゙゙゙)~
   /~゙゙ヾ⌒`ゝ-(~´`(⌒(⌒~ヽ~ ~~  
   ゝー ′ '"      ``"       
0271デフォルトの名無しさんNGNG
10文字トリップだなぁ
0272デフォルトの名無しさんNGNG
無くなると困るので保守
0273デフォルトの名無しさんNGNG
ネタはないが無くなると悲しそうなので保守
0274デフォルトの名無しさんNGNG
みんなも SDKスタイルのコードに挑戦してるの? 通過儀礼?
0275デフォルトの名無しさんNGNG
KOL版System.dcu使って6,656…Delphiだとこの辺が限界みたいです。
0276デフォルトの名無しさんNGNG
>>275
そんなことない。
Windows なら TForm 等の VCL を使わずに WinMain から CreateWindow とかでスクラッチで書けば
すごく小さくできる。
Delphi と Delphi 付属 VCL とをごっちゃにしちゃだめ。
0277デフォルトの名無しさんNGNG
ちなみに、「Delphi 2 達人テクニック」を読めば、スゲーちいさい EXE を
作る方法が載っている。
Delphi 2 の時代のなのでもちろん Windows 専用だが、Kylix でも基本的な
考え方は役に立つはず。
0278デフォルトの名無しさんNGNG
>>276
VCL使わなかったらDelphi使う意味ないやん。
0279デフォルトの名無しさんNGNG
>>278
VCL使わなくてもDelphiを使う意味はありません。
0280デフォルトの名無しさんNGNG
>>279
0281280NGNG
正解!
0282デフォルトの名無しさんNGNG
・VCL使わなかったらDelphi使う意味ないやん。
・VCL使わなくてもDelphiを使う意味はありません。
この2つは同じ意味であり、皮肉になっていないと考える事もできる
0283デフォルトの名無しさんNGNG
>>282
>この2つは同じ意味であり

ぜんぜん同じではありませんよ。
0284デフォルトの名無しさんNGNG
>>276

あのねぇー、>>275 はそんなことは百も承知だよ。
CreateWindow() で作っても、KOL 版より小さくできない。デフォルトで uses
される System.pas の違い
0285デフォルトの名無しさんNGNG
自分でDCUをリンクするプログラム作ってEXEを作ればどう?
0286デフォルトの名無しさんNGNG
>>285

意味が分かりません。説明キボン
0287デフォルトの名無しさんNGNG
>>285
リ ン カ を 作 れ と ! ?

そこまでやるとすでにDelphiじゃねー。
最後はアセンブラ作るとか言い出すなよな。
0288デフォルトの名無しさんNGNG
アセンブラじゃなかったコンパイラ作れ、か。
0289デフォルトの名無しさんNGNG
これ使えや。

http://home1.infonia.ne.jp/~delphian/delphi/compo/applicat.html#AP0050
0290デフォルトの名無しさんNGNG
>>289
ブラクラ
0291デフォルトの名無しさんNGNG
コンパイラはキツイかもしれないが、リンカなら・・・・勉強なら作ったら?
0292デフォルトの名無しさんNGNG
つか、リンカの方が難しいし
つぶしがきかない知識だ。
0293デフォルトの名無しさんNGNG
>>292
そうかなあ・・・
組み込みの仕事なら使うでしょう。
0294デフォルトの名無しさんNGNG
リンカ全般のアルゴリズムというよりも、dcu?の解析をしなきゃいけないのが
潰しが利かないし労多くして益少ない作業だということでは?
0295デフォルトの名無しさんNGNG
このスレのテーマは 勉強 なんだから、そういう事も1回はどこかでやったらいいんじゃないの?

俺? 俺は・・・COFFでやったからいいや。
0296デフォルトの名無しさんNGNG
KOLのつかい方を日本語で紹介してるところないかな?
0297デフォルトの名無しさんNGNG
・Delphiのエキスパート
・KOLを知っている
・見ず知らずの他人のためにわざわざ解説を書いてあげるやさしさの持ち主

これらが融合する人がいると思う?
0298ねこまNGNG
dfm を API + KOL 向けにコンバートするツールができれば
リンカなどいらない様な気がする.
だれか作って (w
0299デフォルトの名無しさんNGNG
KOLってなあに?
0300ゲット300NGNG
    / ̄ ̄ ̄ ̄ ̄ヽ
   /          ヽ
   /   //////ヽヽヽ ヽ 
   |   /  ー   ー | |
   |   /    ・   ・ |/   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   \ |   ○  ー ○|   < 小さーい!すごーい!
    ノへ_____/    \____________
      岡部玲子
0301デフォルトの名無しさんNGNG
誰かKOLとMCLに付いて教えて!
0302デフォルトの名無しさんNGNG
誰も知らないのか?
0303デフォルトの名無しさんNGNG
僕は知らないよ.
0304Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚彡 Korea On Line とかじゃないと思うです。
0305ねこまNGNG
教えて!って言われても困ってしまいます
0306デフォルトの名無しさんNGNG
http://www.xcl.cjb.net/
0307デフォルトの名無しさんNGNG
良スレ
0308デフォルトの名無しさんNGNG
OK灼�
0309デフォルトの名無しさんNGNG
なにも、そんなに KOL な。
0310デフォルトの名無しさんNGNG
あ
0311デフォルトの名無しさんNGNG
DELPHI 6 PERSONAL版でMCLは使えるのか?
0312デフォルトの名無しさんNGNG
MCL? MCKではなくて?
0313デフォルトの名無しさんNGNG
そうですた、MCKです。
0314デフォルトの名無しさんNGNG
ふーん
0315デフォルトの名無しさんNGNG
保守
0316デフォルトの名無しさんNGNG
ageるぞゴルァ!!(゚Д゚ )
0317デフォルトの名無しさんNGNG
もういい加減削除依頼だしてくれよ、お願いします。
03181NGNG
あけましておめでとうございます。 ネタは無いのですが
0319デフォルトの名無しさんNGNG
ヴァージョンアップのたびに EXE サイズがでかくなるから、
最近は古いヴァージョン使っている。
ただし、あまり古いと今度は使えない機能があったりするから
その辺を考慮して判断すると Delphi5 が最強だと思う。
0320デフォルトの名無しさんNGNG
 ,、,、,||
;'`,゙、.||'、 I'm happy...
'; 、' /´;`'.,
 ´' .; ' ; '、'.
   '; 、 ' ,'
    '.,´; '
     l !j
    /ルゝ
0321デフォルトの名無しさんNGNG
>>その辺を考慮して判断すると Delphi5 が最強だと思う。

禿銅。
D6以降で Kylix が入ったのがすべての災いのもとである、と思う
0322デフォルトの名無しさんNGNG
>>D6以降で Kylix が入ったのがすべての災いのもとである

ったく、Linux みたいなマイナーな環境に引きずられて、もとの Del が汚された
と感じるよなぁー
0323デフォルトの名無しさんNGNG
変えたら変えたで文句言われるし
変えなければまたぶーたれる。
お前らいったいどうしろって言うんだよ。
0324デフォルトの名無しさんNGNG
>>323

某関係のひとですか?
323が変えたわけでもないのにエラソーなのはどうして?
そもそも「変えた」って何のこと?
0325デフォルトの名無しさんNGNG
> お前らいったいどうしろって言うんだよ。
実行サイズが大きくならないように言語やライブラリを拡張しろ
0326デフォルトの名無しさんNGNG
Del7でコンパイルしたフォームだけのEXEのサイズはいくつ?
0327IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0328デフォルトの名無しさんNGNG
             /ヽ       /ヽ
            /  ヽ      /  ヽ
  ______ /     ヽ__/     ヽ
  | ____ /           :::::::::::::::\
  | |       //       \  :::::::::::::::|
  | |       |  ●      ●    ::::::::::::::|
  | |      .|             :::::::::::::|   ・・・・・
  | |       |   (__人__丿  .....:::::::::::::::::::/
  | |____ ヽ      .....:::::::::::::::::::::::<
  └___/ ̄ ̄       :::::::::::::::::::::::::|
  |\    |            :::::::::::::::::::::::|
  \ \  \___       ::::::::::::::::::::::::|
0329IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0330デフォルトの名無しさんNGNG
           ∠ ̄\
            |/゚U゚|  ヤレヤレ
       ___|__|____
      / \       ___\
     .<\※ \____|\____ヽ
        ヽ\ ※ ※ ※| |====B=|
        \`ー──-.|\|___l__◎..|ヽ
          ̄ ̄ ̄ ̄| .| ̄ ̄ ̄ ̄|
               \|        |〜
0331デフォルトの名無しさんNGNG
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
0332デフォルトの名無しさんNGNG
http://qb.2ch.net/test/read.cgi/accuse/1042013605/114-119

/ヽァ/ヽァ
0333デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0334デフォルトの名無しさんNGNG
http://headlines.yahoo.co.jp/hl?a=20030109-00000021-zdn-sci
0335デフォルトの名無しさんNGNG
>>1 もぅいいじゃないか。
開き直れよ! 俺は変態だ!!って。
変態の何処が悪いんだよ。
男はな、みんな大なり小なり変態なんだよ。
そのことを女の大半が知らないだけなんだよ。

結論として言えることは、女の無知が悪いってことだよ。 
0336デフォルトの名無しさんNGNG
ごめん、そんなにおもしろくなかったので寝ます(^_^;)
0337デフォルトの名無しさんNGNG
>>143
どこの板が取っているの?
0338デフォルトの名無しさんNGNG
さようなら、2ちゃんねる
0339デフォルトの名無しさんNGNG
本気も本気
覆しようのない事実なわけですが
0340デフォルトの名無しさんNGNG
>>907
それはある。
0341デフォルトの名無しさんNGNG
>>540
鑑定スレでお願いしようとして誤爆し・ま・す・た・!   
0342デフォルトの名無しさんNGNG
保守
0343デフォルトの名無しさんNGNG
http://qb.2ch.net/test/read.cgi/sakud/1028262850/66
まとめ方の理想像の例

http://qb.2ch.net/test/read.cgi/sakud/1028262850/69
育児のまとめは、とりあえず理想的かなと。一応、私もそれに
近い形で分類して、アンカー付けて、というのを心がけてます。
(ただ、不備な依頼を抜くかどうかは、人によりけりかな。「これは
不備」と書いてあげた方が、再依頼する人のチェックの手間は
省けるわけで)

http://qb.2ch.net/test/read.cgi/sakud/1028262850/143
>まとめるならレスアンカーは付けて欲しいなと。
0344デフォルトの名無しさんNGNG

負荷が高そうなサーバー…live(・∀・)?
0345デフォルトの名無しさんNGNG
>>374
IP記録されてること自体気づいてないユーザーの方が圧倒的かと・・・
0346デフォルトの名無しさんNGNG
>>705
来週も番組が無事でありますように
0347デフォルトの名無しさんNGNG
しょぼーん
0348デフォルトの名無しさんNGNG
のだと下四桁みたいだけどね。
3桁?&まだある、そのサイト?
0349デフォルトの名無しさんNGNG
さん
夜なのですの?
0350デフォルトの名無しさんNGNG
つうほうされますた
0351デフォルトの名無しさんNGNG
つうか、強制IDが入った時点で俺の2chは終わってたし。
書き込み回数激減したよ。強制ID入ったときは。
0352デフォルトの名無しさんNGNG
そこがばらすでそ。
どこから請求が来たかにもよるかも知らんが
0353デフォルトの名無しさんNGNG
あっ、漏れと同じ串だ
0354デフォルトの名無しさんNGNG
賛成!えらい。よく思いついた、あんたは凄い!天才!神!シャッチョウサン!
0355デフォルトの名無しさんNGNG
779 名前:スゴイ人  ◆y.GuoEaXhM 投稿日:03/01/11 11:43 ID:mqJGw88D
俺のことが言いたいんだろ?
ストーカーみたいに追いこんでくるね、ほんと。
2003・1・11
2ちゃん閉鎖ってなったらどう?
ありえなくもないだろ?

http://live2.2ch.net/test/read.cgi/news/1041948269/l50
0356デフォルトの名無しさんNGNG
隊長!誤爆しましたっ!
すまん!
0357デフォルトの名無しさんNGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
0358デフォルトの名無しさんNGNG
とにかく、今後の成り行きを見て行くしかありませんね。
授業料は、ひろゆきさん、もしくは一部の無鉄砲な人たちが
払ってくれるでしょう。
0359デフォルトの名無しさんNGNG

さ〜よな〜ら、大好きな2ちゃん〜♪

 
0360デフォルトの名無しさんNGNG
誤爆した悪い
0361デフォルトの名無しさんNGNG
バスで家の近くまで送るくらい思いつかないのかね?
横付けしろなんて言ってないだろうに…
子供が危ないかもしれないのに、
親は家で待ってるだけですか?
0362デフォルトの名無しさんNGNG
いや、匿名で時分の身元を隠した一方的な書きこみなぞ
全部削除してもかまわないとおもうね
誰が文句を言うと言うのだ
匿名である以上削除されても文句など出るわけもない
0363デフォルトの名無しさんNGNG
エスパー伊東
0364デフォルトの名無しさんNGNG
名誉毀損ってのは "事実" であっても該当するのは周知の事実ですよね。
(ただし、公共の利益になる場合はこの限りではないのだけど)

事実誤認のレスで 名誉を毀損された =営業的な不利益が生じた のであれば
確かにレスが事実誤認であることを証明するのは 原告側。

しかし その反証の場が 2ch でなくてはならないというのは ? です。

今や 2ch は管理人の個人サイトとは判断されないほど メディアとしての
認知・影響力が裁判所で認定されているですから
公序良俗に反する情報発信は情報の発信者が責任を負うべきでしょう。
その発信者の情報をわざと特定させないのは 
ある意味、確信犯的な共犯者と見なされても仕方ないでしょ。

(もちろん、Internet の匿名性 については十分、議論の余地はあります。)
0365デフォルトの名無しさんNGNG
引き続き gamble 行きます。
0366山崎渉NGNG
(^^)
0367デフォルトの名無しさんNGNG
こっちか。

他に、今、裁判中なのは何??

0368山崎渉NGNG
(^^)
0369デフォルトの名無しさんNGNG
age
0370山崎渉NGNG
(^^)
0371山崎渉NGNG
(^^)
0372デフォルトの名無しさんNGNG
KOLのつかい方を日本語で紹介してるところないかな?
0373デフォルトの名無しさんNGNG
せめて英語でもう少し詳しく知りたいなぁ。
コンポの作り方がいまいち理解できない。
0374人いないから無駄だよNGNG
つーか、KOLって何?
ヘヴィ・D!とか出るヤツ?
ジェノサイッ…… カタッ!
0375デフォルトの名無しさんNGNG
SysUtilsってどうやって実行時エラーを例外に変換しているんでしょう?
ErrorProc変数設定しても何も変わらないし。
SetUnhandledExceptionFilterを使ってもデバッグ時に実行時エラーを
捕まえられない・・・ていうか実行時エラーの破棄の仕方がわからない。
こういうときソースもっていないとやっぱりつらい。
0376デフォルトの名無しさんNGNG
(´-`)。o ○ (>>372のことも解決してないのに新たに違う話題が…
しかもスレに合ってる?人いないのに…)
0377デルファイの名無しさんNGNG
>>375
Unhandled…よりも先にまずFS:[0]に飛んでくるので、そこで処理された場合Unhandled…には来ない。
try文をCPU窓で見ればわかるけど、以前のFS:[0]を待避させた上で置き換えてる。

ってなんでこんなつまらんこと知ってんだワタシは…
0378デフォルトの名無しさんNGNG
(´-`)。o ○ (母さん… このスレにも人がいたよ…)
0379375NGNG
KOLのページにいってみたらerr.pasなるファイルがあってこれがSysUtils
互換のファイルだと書いてある。ソース読んでみるとSystem.ExceptObjProc
変数を設定することで実行時エラーからDelphi例外を生成できることを発見。
他にもExceptClsProcやAssertErrorProcを設定すれば標準の例外処理をほぼ
実現できるようだ。ちなみにこの方法でOS例外(実行時エラー)を処理できる
実行ファイルを作ると、Delphi6で16KBになった。

>>377
すいません、アセンブラわかりません。
0380デフォルトの名無しさんNGNG
なんでKOLはサイズ小さくできる仕組みなんですか?
いや、なんでVCLはサイズ大きくなるんですか?
なんでKOLはObjectなんですか?
いや、なんでVCLはClassなんですか?
なんでKOLのTListが高速なんですか?
いや、
0381デフォルトの名無しさんNGNG
いや、 ?
0382デルファイの名無しさんNGNG
>>379
あら、それでは不親切だったかな。
解決したようですけど、一応説明加えとくと、

FS:[0]というのは、まあそういうOSが用意した変数があると思ってもらって、
アクセス違反や0割などが発生すると、まずFS:[0]に設定したアドレス(except節)へ飛ぶ。
で、まず例外をDelphiのオブジェクトに置き換え(そういう関数を呼ぶコードをコンパイラが勝手に埋めこむ)、
処理すべき例外かどうかチェックして(on 〜に相当)、処理できるならできる、できないならできないと返す。
処理できるルーチンが見つかるまで、スタックを遡って、見つからなければUnhandled〜というわけです。
で、この「例外をDelphiのオブジェクトに置き換え」の部分が、あなたの言ったExceptObjProcなど。
0383デフォルトの名無しさんNGNG
保守
0384デフォルトの名無しさんNGNG
やっとMCKの使い方わかったよ
0385デフォルトの名無しさんNGNG
保守
0386山崎渉NGNG
(^^)
0387山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0388デフォルトの名無しさんNGNG
すっごく下らないことだけど、教えてください。
小さいEXE作ろうと思ってMCKに挑戦してるんですが、あまりにも情報が少ないので。
例えば終了ボタンを作る場合、VCLならボタンのOnClickのハンドラにCloseと書くだけですが、
MCKだとどうすればいいんでしょうか。
0389388NGNG
あちゃー、自己解決しました。
Form1.Close もダメだし、KOLForm1.Close もダメで困ってたんですが、Form.Close でいいんですね。
ロシア語の解説サイト(http://kol.mastak.ru/)を翻訳サービスで英訳して読んでたらわかりました。
0390過疎地NGNG
MCKって何?
いや、マジで。
0391デフォルトの名無しさんNGNG
ロシア語って書いてるでしょ。ロシアじゃシェア高いんだよ。
で、最新パソコンで無くても動くように小さなVCLが欲しい要求が日本なんかよりとても大きくて
0392388NGNG
>>390
http://bonanzas.rinet.ru/
とりあえずここ参照。
VCLでフォームにボタンやらエディットやら貼り付けただけでコンパイルすると400KB。
MCKだとほぼ同じ操作で同じ物が作れて、そのサイズが30KBなんだからすごいですよ。
300KBの間違いじゃないですよ。
ただ日本語はおろか英語でもほとんど情報がなくて、とりあえず始めるまでにえらく苦労しました。
あとクラスというものが使えないらしく、代わりにオブジェクトを使えとか書いてますが、
この辺がまだよくわからないです。
誰か詳しい人いないのかな・・・。
0393デフォルトの名無しさんNGNG
TRegExprの作者もロシアンだ。
0394390NGNG
>>392
ふーん。
よく分かったけど、なんでdelphiと全く無関係なことを書いてるのか?という
新たな疑問が生まれました。
0395デフォルトの名無しさんNGNG
0396デフォルトの名無しさんNGNG
MCKってBuilderじゃ使えんのかな
0397390,394NGNG
>>394は忘れてくれ。
0398デフォルトの名無しさんNGNG
>>397
いや、凄すぎて忘れられないw
0399ミ;゚Д゚彡 ◆A6VzDeLphI NGNG
agaって初めて気が付きまして、インスコしてみましたKOL&MCK・・・

なにこれ、すごすぎ。
0400デフォルトの名無しさんNGNG
KOL&MCKの使い方というか、インスコのやりかたがワカラナイ。
Delphi 6 Personal使ってるけど、どうやるの?
0401Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧
 ミ,,゚Д゚彡
 ミつ日(ミ
kol_mck.zipをダウソして解凍して出来る
Kol_mck.exeを実行して
C:\KOLができるです。

各Verのパッケージ(dpkファイル)があるので
それをDelphiから開いてください。

で、パッケージをコンパイルしてインストールしたら、
コンポーネントがたくさん入るはず。

それをしてから、
KOLサイトからDEMOプログラムをダウソして
プロジェクトファイル(dpr)を開いてみてください。

一番単純なFormだけのものとか開いて
ちょこちょこ改造すると面白い感じ。
0402388NGNG
初めての人には敷居が高いので、というか自分がかなり苦労したので、
導入ガイドのサイトを作ってみました。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/3282/

これでどんどんユーザーが増えて情報が増えるとウレスィな〜
なんて思ってたら、既にフサギコさんに言い尽くされてる。鬱氏・・・
まあ暇があったらコンテンツ増やすようにします。
0403ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
普通のVCL、Form1から作り始めると
>[致命的エラー] Unit1.pas(7): ファイル 'ExptIntf.dcu' が見つかりません
こんエラーがでるです。

??
0404デフォルトの名無しさんNGNG
>>403
一度保存すると別のプロジェクトが作成されるんじゃなかった?
それを開くとMCKが使えるようになったような気がしますた。
0405デフォルトの名無しさんNGNG
>>403
>>402の導入ガイドへにわかりやすくかいてるYO
0406デフォルトの名無しさんNGNG
>>403
ん〜、私も何度か見た覚えが・・・
どうしようもない場合はBINフォルダのdefproj.dofを消すとデフォルトの状態に戻るので、
それで解決したような気がします。
0407406NGNG
>>406は無視してください∧||∧
0408デフォルトの名無しさんNGNG
>>402
お気に入りに入れますた。
0409デフォルトの名無しさんNGNG
ロシア人やるじゃん (・∀・)イイ!!
0410388NGNG
>>408
ありがとうございます。
まだ導入ガイドしかなく、デザインもジオのできあいのままで恥ずかしいですが、
少しずつ内容を増やしていこうと思ってます。
0411Delフサギコ ◆A6VzDeLphI NGNG
           _____________
   ∧,,∧∩  /
  ミ,,゚Д゚彡 < できまった!!>>404
   U  ミ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ ありがとうございます


[デフォルトプロジェクト]-[検索パス]
に入れるのと
[環境オプション]-[ライブラリパス]
に入れるのはどっちも同じ効果なんですか?
0412デフォルトの名無しさんNGNG
あれれ。
インストールしようとしたら
[致命的エラー] mirror.pas(51): ファイル 'Kol.dcu' が見つかりません
だそうです。
どうしたらよいのでしょうか。

(KOLDEF.INCもエラーが出たけどそれはコピーして持ってきた)
0413デフォルトの名無しさんNGNG
>>412
そりゃ見つからないんだから、
Kol.dcuを探して、
ダウンロードして、
パスの通ってるところなどに置いてから、
改めてインストールすれば良いのではないでしょうか?
0414デフォルトの名無しさんNGNG
>>413
ぐぐっても
http://www.google.co.jp/search?num=100&hl=ja&ie=Shift_JIS&safe=off&c2coff=1&q=Kol.dcu&btnG=Google+%8C%9F%8D%F5&lr=
だけです。
0415デフォルトの名無しさんNGNG
>>412
できました。
0416デフォルトの名無しさんNGNG
BCBでも使えるかな?
試してみるか
0417416NGNG
BCB6(UPDATE4)でテスト。
↓こんなん出ます。「この仕様」って、どの仕様やねん

[Pascal エラー] kol.pas(62235): Object : この仕様はサポートされていません
0418デフォルトの名無しさんNGNG
>>417
乙
0419デフォルトの名無しさんNGNG
 class 型よりいにしえにobject型というのがあって、
  object型はBCBのpascalコンパイラではサポートされてないんだ。

 BCBで使うならobject型の部分をクラスにするかレコードにするかしないとだめだね
0420デフォルトの名無しさんNGNG
いわゆるひとつの、age
0421ミ;゚Д゚彡 ◆A6VzDeLphI NGNG
>>419
そうなんだ・・・
0422416NGNG
>>419
情報tnx.

とりあえず、type = object のところを機械的にclassに置き換えて試してみたが、
「オブジェクト型が必要です」と怒られてしまった。
うまくいかんものだな。
0423ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
type = objectと
type = classは
オブジェクト生成の方法や
引数渡しの方法がぜんぜん違うから
そのあたりを調べながらやってみてはどうでしょうか?

大きいライブラリであるほど
焼き直しは大変だと思うけど。
0424416NGNG
>>423
>オブジェクト生成の方法や
>引数渡しの方法がぜんぜん違う

やはりそうですか……

Delphiのobject型については、ぐぐっても思うように情報が見つからんので
ちと頭が痛いですyo

暇なときに、MLあたりで情報収集しますわ
0425デフォルトの名無しさんNGNG
KOLのリッチエディットコントロールで
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName)
という形式が使えなくなった!
どうすればファイルを読み込めるのでしょう?
0426Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧
 ミ,,゚Д゚彡
 ミつ日(ミ

とりあえず、これで動きました。
(サンプルアプリのMultiClbrd見たよ)

procedure TForm1.Button1Click(Sender: PObj);
var
 SL: PStrList;
begin
 SL := NewStrList;
 SL.LoadFromFile('C:\Borland\Delphi6\Projects\testKOL\Unit1.pas');
 RichEdit1.Text := SL.Text;
 SL.Free;
end;

ライブラリの根幹から
type Objectを使っているので
改造は大変そうですね。
0427416NGNG
恥ずかしながら、object型ってのは今日初めて知った。
普段はBCBばっかり使ってるし。

昔Delphiで作った小物をいくつかKOL化してみたけど、いいわーコレ。
Indyみたいに、おまけでDelphiについてきたら面白いかも。
0428デフォルトの名無しさんNGNG
object型は C++ のクラスのようにヒープでない所(スタックやグローバル)にもインスタンスが作れる
そうすると解放の手間がいらないわけでその分便利なんだけど、
そういう便利さを使ってるとクラス型には簡単に置き換えてOKって訳にはいかない。

レコード型にして、メソッドの部分を関数に置き換えてゆくのも苦労だし
クラスに置き換えるのも結構大変
0429デフォルトの名無しさんNGNG
う〜ん、オブジェクト型についての情報が見つからない・・・
古めのDel本でも読んだらいい?
0430デフォルトの名無しさんNGNG
>>429
ターボパスカル本を探さないとダメでしょ Delphi1以後はclass型推薦だから
0431429NGNG
>>430
情報サンクス
探してみる。
何か後ろ向きのような気もするけど・・・
0432デフォルトの名無しさんNGNG
どちらかと言えば、メソッド付きrecordなイメージ。
DelphiのclassはJava似だけど、objectはC++のstructに近い。多重継承を除いて…。

個人的には、object型でもインターフェースさえ実装させて欲しい。
0433デフォルトの名無しさんNGNG
1立方センチメートルくらいの奴キボン
0434デフォルトの名無しさんNGNG
Object型の解説はここがいいかも
http://www.mactech.com/articles/mactech/Vol.02/02.12/ObjectPascal/
0435ねこまNGNG
object 型の特徴
- override できない
- interface の導入も無理
- 唯一 virtual が出来る?のでこれで継承
※object 型の New 手続きの使い方はヘルプから削除されている

日本語での情報としては FDELPHI の過去ログが一番イイ!
いまさら感が否めないけど.
0436デフォルトの名無しさんNGNG
Delphi.NETの方では、完全にobject型がなくなるらしい。
その代わり、recordにメソッドが持たせられるとかどうとか。
ようは、C#っぽくなるわけだが。

どちらにせよ、objectは将来性がないから、あまり肩入れし過ぎないようにしないと(´д`;)
0437デルファイの名無しさんNGNG
>override できない
一瞬戸惑ったけど、"override" という指令が使えない、という意味ですね。
C++同様に同名のvirtualメソッドを派生クラスで宣言すればオーバーライドです。
あと、virtualの後に数字を付ければ、今「message 数値」と書いているのと同様なことが出来るはず。

それとNew/Disposeはこんなの。
New(インスタンスを格納するポインタ, コンストラクタ(引数)); // New(PObj, Init(123));
Dispose(ポインタ, デストラクタ); //Dispose(PObj, Done);

Delphi1付属のOWL(Pascal版)のソースを見れば使い方はだいたいわかる。
でも代入演算子が再定義できないので、結局はメソッド付きrecordに留めておくのが吉。
0438デルファイの名無しさんNGNG
>>436
ん?それ(recordにメソッド)がサポートされるからこそ、今安心してobject型が使えるんじゃないですかw

TOBJ = {$IFDEF DOTNET(←?)} record {$ELSE} object {$ENDIF}
 なんたら;
end;
0439デフォルトの名無しさんNGNG
a, so-ka, naruhodo(w
0440デフォルトの名無しさんNGNG
KOL難しいけど超ステキ!!
0441デフォルトの名無しさんNGNG
最近のDel厨の流行りはKOLでつか
0442ねこまNGNG
静かなブームです.
(流行ってない)
0443デフォルトの名無しさんNGNG
SaveToFileとかVCLでは簡単な記述ですんだけどKOLではそうはいかない。
しかも、フォント選択ダイアログがないことがもうダメかな。

そんな漏れにKOLを教えてくれー
0444デフォルトの名無しさんNGNG
>>443
SaveToFileあるよ。
0445デフォルトの名無しさんNGNG
KOLProjectのShowHintプロパティをTrueにするとKOLFormのShowHintプロパティもTrueになるけど、
実際にコンポーネントのHintプロパティに何か入れるとエラーが出ます。
KOLではHintは使えないんでしょうか?
0446デフォルトの名無しさんNGNG
TMyTimer = class(TTimer) みたいにして派生クラスを作るのは、KOLではどう書けばいいですか?
0447446NGNG
つまり、TTimerを継承して独自のメソッドやプロパティを持たせたいんですが。
0448デフォルトの名無しさんNGNG
KOL知りませんけど、object型なら、TMyTimer = object(TTimer) でわ?
0449446NGNG
>>448
レスどうも。
フォームの定義をまねて、
PMyTimer = ^TMyTimer;
TMyTimer = object(TTimer)
とやったらいけました。
constructorの代わりにNewMyTimerという関数を作って
その中で
new ( Result, Create);
とやってるんですが、これで正しいんでしょうか。
今のところ思い通りに動いてるからよしとするかな・・・。
0450デフォルトの名無しさんNGNG
kol使いたくてDelphi personal入れたYO
0451デフォルトの名無しさんNGNG
ホッシュ
0452デフォルトの名無しさんNGNG
実行ファイルのでかさなんて問題ではない時代に突入しているというのに・・・

早く作り上げるという選択肢を選ぶ方が賢い
0453デフォルトの名無しさんNGNG
世の中が全部そうなってるわけでもないでしょ。
興味の無いスレなら見なければいい話。
自己展開書庫の頭につけるコードとか、フロッピーが生き残っている環境とか、
小さい方がいいのはいくらでもある。
0454デフォルトの名無しさんNGNG
煽りにマジレスカコワルイ
0455デフォルトの名無しさんNGNG
KOLで作ってUPXで圧縮、これ最強。
100KB以上の巨大アプリはもういらん。
0456デフォルトの名無しさんNGNG
KOLってOOじゃないのかよ。
デザパタ適用できないのかよ。
0457デフォルトの名無しさんNGNG
UPXを使ってるプログラマは屑だと思いますよ^^
0458デフォルトの名無しさんNGNG
容量が小さくなるに越したことはないんだが。
0459デフォルトの名無しさんNGNG
>>458
そうだな。
0460デフォルトの名無しさんNGNG
>>457
何で?
0461デフォルトの名無しさんNGNG
無駄にメモリ消費するからに決まってんだろボケ
0462デフォルトの名無しさんNGNG
それがいやなら展開すりゃいいじゃん。
0463デフォルトの名無しさんNGNG
なら最初から圧縮するなよ
いまどきタダ同然のHDD領域がもったいないと思う奇特な奴だけが
圧縮すればいいだろ。
0464デフォルトの名無しさんNGNG
まあUPXは見た目の小ささ以外には意味ないと思うな。
どうせ実行時にはメモリ上に展開されるわけだし。
0465デフォルトの名無しさんNGNG
配布するときはどうせzipだしな。
メモリ上は圧縮したほうが食うだろう。
どうしても実行可能状態でのHDD領域が気になる奴は、
ドライブごと圧縮すればいいんだし。
0466デフォルトの名無しさんNGNG
>>465
ほぼ同じ
0467デフォルトの名無しさんNGNG
素人が喜ぶツール
0468デフォルトの名無しさんNGNG
いやいや、玄人ぶったやつが頼んでもいないのに批判と解説をしてくれるツールだよ。
0469デフォルトの名無しさんNGNG
>>463
まあでも LAN越しやFDに入れて動かすには圧縮しておけば便利じゃないか。
0470デフォルトの名無しさんNGNG
>>468
>>460
0471デフォルトの名無しさんNGNG
>>465
UPXで圧縮してからzipアーカイブにした方が実は配布サイズが小さくなるYO。
0472デフォルトの名無しさんNGNG
まあ微々たる物だけどな。
0473デフォルトの名無しさんNGNG
>>465
起動時に若干多く食うだけ。
起動後は変わらない。
0474デフォルトの名無しさんNGNG
>>471
常時接続高速回線の時代に何言ってんだアンタ
0475デフォルトの名無しさんNGNG
Air H"ですが何か?
0476デフォルトの名無しさんNGNG
55.6kですが何か?


 



                                      ( ´Д⊂ヽ
0477デフォルトの名無しさんNGNG
飽食の時代に貧乏性炸裂
0478デフォルトの名無しさんNGNG
今は崩食の時代だそうですよ
0479デフォルトの名無しさんNGNG
玄人指向プログラミング
0480デフォルトの名無しさんNGNG
至高のプログラミング
0481デフォルトの名無しさんNGNG
>>474
鯖の負荷が小さくなる。
0482デフォルトの名無しさんNGNG
メールチェッカーを作っています。
program Project1;

uses
Windows,
ShellAPI,
Graphics,
Messages;

{$R *.res}

procedure ICONMessage(var Msg : TMsg);

var
FIconData : TNotifyIconData;
Icon: TIcon;
Point : TPoint;

0483デフォルトの名無しさんNGNG
begin
with FIconData do
begin
cbSize := SizeOf(TNotifyIconData);
uID := 1;
Wnd := Handle;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := WM_USER + 100;
szTip := 'メール未チェック';
Icon := TIcon.Create;
Icon.LoadFromFile('Nomal.ico');
hIcon := Icon.Handle;
Shell_NotifyIcon(NIM_ADD, @FIconData);
Icon.Free;
end;
0484デフォルトの名無しさんNGNG
GetCursorPos(Point);
case Msg.wParam of
WM_LBUTTONDOWN:
begin
〜
end;
WM_RBUTTONDOWN:
begin
〜
end;
WM_LBUTTONDBLCLK:
begin
〜
end;
end;
end;
end.
としてもうまくいきません。
タスクトレイに常駐させるサンプルを
かいていただけませんか?
0485デフォルトの名無しさんNGNG
>>482-484
スレ違い 質問スレ池
0486デフォルトの名無しさんNGNG
このスレでいいんじゃないの? 質問スレでAPIプログラミングは判らんでしょ。
0487デフォルトの名無しさんNGNG
>>486
ここのスレタイ嫁

ここでどうぞ↓
ミ,,゚Д゚彡フサギコとモナーのDelphi質問相談談話室
http://pc2.2ch.net/test/read.cgi/tech/1052312038/
0488 NGNG
スレ違いだし。
「サンプル書け」だし。
つまらん煽りネタ?
どっちにしろ他逝けって感じ。
0489デフォルトの名無しさんNGNG
判ったよ。
じゃ、ここの
ttp://homepage1.nifty.com/~okapon/download/
小さいタスクトレイ常駐アプリケーションを作りたい!!

を参考にして下さいって事で
0490デフォルトの名無しさんNGNG
もしかして答えたかったのか?
0491デフォルトの名無しさんNGNG
この騒ぎに便乗しよう。
新着メール数を得るのにいいものはありませんか?
IndyのIdPOP3は使えないや…
dllとかでもいいので教えて下さい
0492デフォルトの名無しさんNGNG
「ありますか」「ありませんか」「出来ますか」「出来ませんか」
↓
「ある」「無い」「出来る」「出来ない」


質問だけ敬語
↓
レスは「ありが�d」
0493デフォルトの名無しさんNGNG
>>491
このスレの頭から読めば判るだろうけど、
小さな実行ファイルを作りたいというのは自分で調べてローレベルから実装しようという意味だよ。
0494491NGNG
>>493
すみませんでした。
0495デフォルトの名無しさんNGNG
TMemo / TButton / TTcpClient を設定。 TTcpClient には RemoteHostに自分のNPOP サーバと RemotePortに110
procedure TForm1.Button1Click(Sender: TObject);
procedure msg(s:string);
 begin Memo1.Lines.Add(s)  end;
function Send(s:string):string;
var w:string;
 begin  msg('送信 :' + s);
 with TcpClient1 do begin  Sendln(s);  Sleep(300);  WaitForData(1000);
  w:= Receiveln;  msg(w);
 if copy(w,1,3)<>'+OK' then abort;//通信エラー
  delete(w,1,4);
  Result:=w;
 end
end;
var w:string;
begin
 TcpClient1.Open;
 if not TcpClient1.Active then abort;
 msg('Active');
  TcpClient1.Connect;
  TcpClient1.WaitForData(1000);
 if not TcpClient1.Connected then abort;
 Send('USER '+user);  Send('PASS '+pass);
 Send('STAT');
 Send('LIST');
 TcpClient1.WaitForData(1000);
 while TcpClient1.BytesReceived>0 do begin
  with TcpClient1 do w:= Receiveln; msg(w);
  TcpClient1.WaitForData(1000);
 if copy(w,1,1)='.' then break;
 end;
end;
0496デフォルトの名無しさんNGNG
>>491
新着メール数をえるのに Indyが小さな実行ファイルを作るのに使えないというなら、
>>495のように TcpClientを直接叩け

それでも大きいというなら、WinSockを直接叩け
0497デフォルトの名無しさんNGNG
なお、495はサンプルコードだ。  QUITもしていない。
不明な点があるなら RFC1939 を読め。 検索すれば日本語翻訳も見つかる
0498デフォルトの名無しさんNGNG
あ USER を送る前に バッファの中身をReceiveしとくべきだな
0499デフォルトの名無しさんNGNG
>>491
Indy for KOL v0.15

http://kol.mastak.ru/files3.htm
0500500NGNG
500
0501デフォルトの名無しさんNGNG
>>1
大きな実行ファイルを作りたいです
0502デフォルトの名無しさんNGNG
>>501
大きい画像を、リソースにでも埋め込めば?
0503デフォルトの名無しさんNGNG
>>501
Delphiで作ると普通に大きくなると思うが
0504 NGNG
ネタにマ(略)
0505デフォルトの名無しさんNGNG
>>503
ワラタ
0506デフォルトの名無しさんNGNG
>>1
ぼくは、誰にも負けない大きな大きな実行ファイルを作るのが夢なんです
0507デフォルトの名無しさんNGNG
(´-`)。o ○ (「Delphiで大きな実行ファイルを作ろう」ってスレ立てたら
エエやないの)
0508デフォルトの名無しさんNGNG
>>506
ぼくは、誰にも負けない大きな大きなうんこをするのが夢なんです
0509山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0510デフォルトの名無しさんNGNG
保守
0511デフォルトの名無しさんNGNG
あげ
0512デフォルトの名無しさんNGNG
保守
0513デフォルトの名無しさんNGNG
あげ
0514デフォルトの名無しさんNGNG
保守!!
0515デフォルトの名無しさんNGNG
終わったな
0516デフォルトの名無しさんNGNG
Delphiで小さな実行ファイルを作ってる人は
あんまりいないの?
Delphiを使ってる人はサイズが大きくなるのを
黙認してるのかな…
0517デフォルトの名無しさんNGNG
>>516
Delphiで小さな実行ファイルを作ろう。
↓
API直叩き。
↓
Delphiを使う意味が無いことに気付く。
↓
C/C++へ。
0518デフォルトの名無しさんNGNG
>>516
Delphiで小さな実行ファイルを作ろう。
↓
実行時パッケージ使えばいいか。
0519デフォルトの名無しさんNGNG
>>516
いるよ〜。

ただ、>>517は事実なので、PascalとC++(というよりむしろ
高速コンパイルとtemplate)のトレードオフになってしまう。
で、両方を一定レベル以上で使える香具師ならtemplateを選ぶだろう。

俺のように、高速コンパイルを選ぶやつは少数派ってことです…
0520デフォルトの名無しさんNGNG
Delphiを使う必要が無いということは、
Cを使う必要が無いと言ってるようなもん
0521デフォルトの名無しさんNGNG
Delphiの高速コンパイルは罪
はっきりいって、template満載のC++のコンパイルに我慢できないよ・・・
どうしてくれるんだYO!!
0522デフォルトの名無しさんNGNG
いいんだよ。
 STL使うよりコード書いた方が楽しいじゃないか
 テンプレート書くのは楽しいけど、他人のテンプレート使うと、なんだかVBプログラマになったようで嫌だろ?
0523デフォルトの名無しさんNGNG
ソースから使ってない関数等をすべて削除してくれるツールがあれば便利なのにな
0524デフォルトの名無しさんNGNG
使ってない関数はコンパイルすると 左に ・ が付かないから手動でやればいいんじゃないのかな
0525ななしへたぐらま ◆XcB18Bks.Y NGNG
>>516
小さな実行ファイルの需要が限られているからでしょうか.
中規模以上なら数百キロの差は無視できるでしょうし,
自分で使うだけのアプリなら多少大きくても問題ないでしょうから.

>>517
KOLは無視?
0526デフォルトの名無しさんNGNG
別に良いんじゃない?
某有名Delphiさんのアプリで実行ファイル10MBのあったし。
そんなのに比べれば1Mや2Mくらいね〜

…デモ ヤッパリ サイズハ キニスル ヨナァ...
0527デフォルトの名無しさんNGNG
自分専用ならどうでもいいけど、配布するとなるとやっぱり小さい方がいい。
DL時間とかは今や問題にならないにしても、見た目がねえ。
というわけでKOLマンセー。
0528デフォルトの名無しさんNGNG
>>526
…それ、ゲームじゃないか?
音楽とか実行ファイルに含めりゃ余裕でそれくらいいくけど、別にDelphiに限ったことじゃない。
0529デフォルトの名無しさんNGNG
サイズ気になるなら、C使えばいいじゃん。
DelphiやVBの優位点はサクサク作れるスピードなのに、
それを殺してまでサイズを減らす必要あるのかな?
時代の流れで、サイズが気にされなくなってきてるならDelphiにとっては嬉しいことなのにね。
0530デフォルトの名無しさんNGNG
>>529
はいスレ違い
0531デフォルトの名無しさんNGNG
VCL込みで増えるサイズは400KB程度だよな。
大きいアプリに成れば成る程気にならなくなる。
0532デフォルトの名無しさんNGNG
KOL使えばVCLとほぼ同じ作り方ができて30KB程度だよ。
0533デフォルトの名無しさんNGNG
んなこたない
0534デフォルトの名無しさんNGNG
KOL標準のオブジェクトにスクロールバーが無いのはなぜだ。
0535デフォルトの名無しさんNGNG
と思ったら、IDE には表示されていないが存在する模様。
0536デフォルトの名無しさんNGNG
KOLが突然消えたら誰が責任取ってくれるの?
0537デフォルトの名無しさんNGNG
その時こそチャンス。 自分で小さいの作って一挙に名前売ってね
0538デフォルトの名無しさんNGNG
何であんなにサイズ違うのか判らん
VCL廃止してKOLにしてくれよボーランド
0539デフォルトの名無しさんNGNG
なんでVCLを廃止する必要があるんだ?
KOLはKOLで使っていけばいいし、VCLはVCLで存在することで何の迷惑もかけていない
0540デフォルトの名無しさんNGNG
選択の自由。ってやつだ。
0541デフォルトの名無しさんNGNG
KOLねぇ…。
漏れみたいな初心者には全く向いてないね、うん。
Memo1コントロールにあるようなMemo1.Lines.LoadFromFileとかが使えないし。
んー、漏れが勉強しなければいけないのかもしれないけど
使うかどうかは微妙〜
0542デフォルトの名無しさんNGNG
KOL と MCK のソースは読む必要があるかと。
日本語ドキュメントが無いならソース読むしかない。
0543デフォルトの名無しさんNGNG
>>542
英語を読むという手もあるぞ。
Padcalのソースと英語と、どちらが読みやすいかは、個人によるが…
0544デフォルトの名無しさんNGNG
>>541
RichEdit使っとけば?
RichEdit1.RE_LoadFromFileっての
0545デフォルトの名無しさんNGNG
CONCONクラッシュ
0546デフォルトの名無しさんNGNG
大は小を兼ねる
大きいことはいいことだ
0547デフォルトの名無しさんNGNG
ここ更新されんな・・・
http://www.geocities.co.jp/SiliconValley-Sunnyvale/3282/
0548デフォルトの名無しさんNGNG
正直、コンパクトなサイズの実行ファイルにこだわり過ぎると、APIを駆使せざるを得ないので
しんどいし、生産性が極端に悪くなるから嫌だ。
0549デフォルトの名無しさんNGNG
>>548
その通りだけど、そうやって自分を鍛えようってのがこのスレの趣旨だろ
0550デフォルトの名無しさんNGNG
Да, у меня есть время
0551デフォルトの名無しさんNGNG
>>550
What are u getting at?
0552550NGNG
>>551
Крупный сайт о программировании
0553デフォルトの名無しさんNGNG
>>552
Oh yeah!
0554デフォルトの名無しさんNGNG
>>548
駆使って言うほどWinAPIって難しかったっけか?

ウインドウの初期化処理は使い回しできるし、後はメッセージ受けとるだけ。

「僕はコンポーネントをダブルクリックして自動的にコードを書かせなきゃプログラムは書けない!」

とか言うんなら、哀れな目で応援するが。
0555デフォルトの名無しさんNGNG
548が言ってるのは、Delphi使ってるんだからAPIAPIAPIAPIしなくても。
ということだと桃割れ
0556デフォルトの名無しさんNGNG
>>555
まぁ、今更VCL捨ててまで遊ぶのもアレだな。昔みたいにHDD320MBとかなら納得するけれど。
0557デフォルトの名無しさんNGNG
>>554
コンポーネントをダブルクリックしてもコードは自動生成されませんが。

いや、言いたいことはわかるけどね。

>ウインドウの初期化処理は使い回しできるし、後はメッセージ受けとるだけ。
この程度の話をしているわけではあるまい?
0558デフォルトの名無しさんNGNG
>>557
それ以外にDelphiはやらなくて良くてWindows APIではやらなきゃいけない事ってあったっけか?
0559デフォルトの名無しさんNGNG
コンポーネント書いたり、使ったりしたことある?>>558
0560デフォルトの名無しさんNGNG
>>559
あるよ。普通に。

最近は色々考えることあってTWinControlを欲しない物はクラスにしてるけど。
0561デフォルトの名無しさんNGNG
>>560
じゃぁ、コンポーネント化が「メッセージを受け取るだけ」ではないことは容易にわかるだろうに。

多分、知ってて書いているんだろうけどさ。
0562デフォルトの名無しさんNGNG
>>561
ビジュアルじゃないVCLライブラリに関しては便利なことは認めるけどな。
0563548NGNG
正直に白状すると、VB(6.0以前)とDelphi(VCL依存コード)以外のプログラミング経験がないため、
CreateWindow、CreateWindowExの使い方を理解していない。
サブクラス化の簡単なのとか、SendMessage 等は一通り理解していますが。
0564デフォルトの名無しさんNGNG
じゃあ、このスレでも見て一通りやってみたらいいじゃない。
Cだと あの教科書コピペしたらそのまま動くから面白くないし、Delphiで書く方が理解が進むでしょ?
0565デフォルトの名無しさんNGNG
Win32APIでの窓作成はHalbowさんのページ見れば全然こわくないぞ
0566デフォルトの名無しさんNGNG
DelphiならAPIしらなくて窓作れるよ
0567デフォルトの名無しさんNGNG
>>565
でもこのスレ的にはSDKのCソース見て地道に勉強する方がいいだろうね。
アレ見てコピペしちゃあ結局Cで勉強してるのと同じでしょ。
というかそれが勉強になるならCでやった方が効率的だ。
0568デフォルトの名無しさんNGNG
>>564-567
ありがとうございます。
(結果報告は後日・・・)
0569デフォルトの名無しさんNGNG
APIばっか使ってたらWindowsが無くなったら大変なことにならないかい?
0570デフォルトの名無しさんNGNG
APIばっか使ってなくてもWindowsが無くなったら大変なことになります。

所詮、WindowsとLinuxでしか動かん開発環境だから・・・。
0571デフォルトの名無しさんNGNG
>>570
すべてを再利用しようとするなってこった。
VCLの思想やオブジェクト指向の知識はどこに行っても役に立つ。

言語に縛られるな。もっと大きく物を見ろ。
0572デフォルトの名無しさんNGNG
こーゆーやつほど小物なんだよなあ
0573デフォルトの名無しさんNGNG
イエティる
0574デフォルトの名無しさんNGNG
VB厨に言われても説得力がない
0575デフォルトの名無しさんNGNG
みなさんさようなら
0576デフォルトの名無しさんNGNG
いかないで…
0577デフォルトの名無しさんNGNG
いかないで〜 いかないで〜
愛したひとは〜 あなただけ〜
泣いて笑って〜 一人きーりー
あなーだけよとー ひとりきーりー
はぁ〜〜♪
0578デフォルトの名無しさんNGNG
0579デフォルトの名無しさんNGNG
はじめてgccをさわってみたんですが、C++でプログラムすると結構でかいバイナリ吐きますね。

#include <iostream>
using namespace std;

int main()
{
cout << "  _、_" << endl;
cout << "( ,_ノ` )y━・~~~" << endl;
}

こんなプログラムを書いてコンパイルしたら、450Kにもなりました。
0580デフォルトの名無しさんNGNG
>>579
C++は小さいプログラムだと大きく感じるが、
大きいプログラムになってもサイズはあまり増えない。

Delphiは小さいプログラムでもそこそこの大きさで、
大きいプログラムになればなるほどサイズも
増えていくというのは常識。
0581デフォルトの名無しさんNGNG
>>580

なるほろ。
0582デフォルトの名無しさんNGNG
そうか?C++でもBoostとか使うと一気に増えるし、
どれだけライブラリ(中の無駄な部分)を抱え込むか/削れるか、の問題だろ?

VCLにも無駄な部分は多いけど。とりあえず全コントロールにドッキング要らん。
TControlを太らせなくてもTDockSiteとTDockPanelさえ用意しておけば済む話じゃ無かったのかと小一時間…
0583デフォルトの名無しさんNGNG
プログラミングスタイルの問題だと思うよ。
OOPとして使えばC++もDelphiも同じ。
ただし、C++の場合テンプレートがあるから、使えば使う程コードは増えてしまうよ。

しかしまあ、書いたコードだけサイズが増えてしまうのは仕方ないし、当然だと思うけどね。
0584デフォルトの名無しさんNGNG
当然ではないと反論してみる
0585デフォルトの名無しさんNGNG
>>579
iostreamつかうなYO
0586デフォルトの名無しさんNGNG
>>583
そういう所をコンパイラで最適化して欲しいけどなぁ
0587山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0588山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0589デフォルトの名無しさんNGNG
がんばってFree PascalでWinアプリを作っちゃうってのはどうですか?
0590デフォルトの名無しさんNGNG
FreePascalはDelphiに比べてコンパイル時間は倍、作成したアプリのパフォーマンスは半分なので、ちょっと・・・
0591デフォルトの名無しさんNGNG
ロマンスティックだな
0592デフォルトの名無しさんNGNG
>>590

Free Pascalってそんなにひどいの?
0593デフォルトの名無しさんNGNG
>>589
Delphiのコンパイラがただで手にはいるんだから必要ないだろ。
0594デフォルトの名無しさんNGNG
>>593

(´・ω・`)
0595デフォルトの名無しさんNGNG
サイズを小さくしたいので、フォームは使わないでダイアログだけ出すように
したいんだけど、フォームなしの通常のアプリにするべきか、コンソールアプリに
するべきかどっちがいいんでしょう?
例えばコンソールアプリにした場合にダイアログを出しても問題はないのでしょうか?
ダイアログは API の MessageBox を使うと思います。

とりあえず簡単なテストしましたが、今のところ問題ないんですが
コンソールアプリとしては邪道だと思うので、そのあたりを教えて下さい。

要するにEXEサイズが小さければ何でもいいのですが。
0596デフォルトの名無しさんNGNG
>>595
中途半端で、キモイって思う人が居るくらいで、問題無い
0597 NGNG
>>595
1.デルファイ ヲ ヤメル。
2.アセンブラ デ ゴリゴリ カク。
3.ウマー!!
0598デフォルトの名無しさんNGNG
>>596
了解です。
0599デフォルトの名無しさんNGNG
だれか教えてくれ。
Linuxのサーバーに繋いで、ファイルのパーミッションを変更するもんを
作りたいのだが、Delphiは全くの初心者で、何の関数をつかえば、全く
わかりません。どうしたらできるの。
0600デフォルトの名無しさんNGNG
>>599
使うツールが違うよ。Debian使いなよ。
0601デフォルトの名無しさんNGNG
FTPクライアントでも作れ。ここで聞くな
0602デフォルトの名無しさんNGNG
>>599
なんのサーバーだ?FTPサーバか?
0603デフォルトの名無しさんNGNG
>>599
telnet でやれば。
つか、擦れ違い。
http://pc2.2ch.net/test/read.cgi/tech/1058834815/l50
から入ってゆっくり勉強せい。
0604デフォルトの名無しさんNGNG
あのな、599だがな、ぎゃぎゃさわぐなっつうの。いま、説明するよ。
サーバーはsambaだ。クライアントは、OSがWindosのPCだ。
知りたいのは、Delphiには、パーミッションを取得し書き換える関数かなんかあると
おもうのだが、それは何だ、どうするのだ。と言うこと。
FTPクライアントでその機能をもっているものが多数あるのは知っている。その中の、
パーミッションだけを書き換える部分を特化したものがほしいのだ。できれば、オナー
やグループが書き換えられるともっといい。

いいか、初級Windowsユーザーがsambaにファイルをおくだろ。あとで、グループに
公開したいとか、なんかパーミッションを変更したくなった時、手軽にそれを変更でき
るアプリがほしいわけ。telnet使える連中なら苦労はしないんだよ。
でも、あれだな、603のいうとおり質問の場所まちがったかな。まあここで質問してしま
たので、最後までたのみまつ。おねがい。
0605デフォルトの名無しさんNGNG
>>604
一応突っ込んで置くが、DelphiはWindows3.1で動くバージョンも存在する。
0606デフォルトの名無しさんNGNG
英字を全角で書くようだったら、プログラマ失格だな。
0607デフォルトの名無しさんNGNG
>>604
>Delphiには、パーミッションを取得し書き換える関数かなんかあると
>おもうのだが

>>601か>>603が正解。
0608デフォルトの名無しさんNGNG
あのな、2ちゃんねるに投稿しているのであって、コード書いてんのとちがうんだよ。
わかる? 
0609デフォルトの名無しさんNGNG
>>608
「ここは教習所じゃない。」とかほざいて平気で信号無視するDQNとどう違うんだ?

0610デフォルトの名無しさんNGNG
ぜんぜんちがうだろ。何勘違いしてんだ。
0611デフォルトの名無しさんNGNG
ここは教習所だから人を轢いても俺の罪にならないと言って人を轢いたやつが、
公道を走ったとき、どうして人を轢かないんだ、と言っているのが、606だ。
こう、説明するとわかるか609
0612デフォルトの名無しさんNGNG
プログラマーは、半角英数をいついかなる場合でも使わなければならないと勘違い
している頭の固いやつは、きっとプログラマーにはむかない。 ということで納得して
くれ。な、みんな。
0613デフォルトの名無しさんNGNG
なんだかんだで中出ししちまうくせに
0614デフォルトの名無しさんNGNG
>>613 おもしろくない
0615デフォルトの名無しさんNGNG
>>607 ありがとう。Delphiの限界をしったよ。Peal+CGIで考えてみるよ。
それにしても、FFFTPなんかは何で作っているのでしょうね。
0616デフォルトの名無しさんNGNG
>>612
ここで関数の有無を質問してる奴はプログラマーにはむかない。
ということで納得してくれ。な、おまえ。
0617デフォルトの名無しさんNGNG
納得できん。もっとすじみちたてて説明してくれ。
0618デフォルトの名無しさんNGNG
>>616 玉子焼きの好きなやつは、弁護士にむかない。と言っているのと同じだ。
0619デフォルトの名無しさんNGNG
>>617
多分あんたが夏とか冬に湧き出る人か、ここが2chだという事を認識できてない
頭の固い人だからじゃない?
0620デフォルトの名無しさんNGNG
納得できん。もっとすじまんなめて説明してくれ。
0621デフォルトの名無しさんNGNG
うぅ〜、わからん。ここが2chと認識できない。こうゆうやつが、関数の有無を
質問するのか。まったく下等な発想とおもうぞ。
0622デフォルトの名無しさんNGNG
さぁ、みんな今日はもうおしまい。もう寝よう。
0623デフォルトの名無しさんNGNG
FFFTPはVC++だよ
0624_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0625デフォルトの名無しさんNGNG
>>623
だからどうかしたか?
0626名無しさんNGNG
>>625
615だが、寝ようとおもったが、おまえな、せっかくおしえてくれたのに
失礼だろ。


0627デフォルトの名無しさんNGNG
>>625
つまりDelphiを窓から捨てようってことだ
0628デフォルトの名無しさんNGNG
フサギコの談話室があるに、わざわざ教えてくれそうも無いところで質問しないでも^^;
0629デフォルトの名無しさんNGNG
学校が休みになると下等生物がわいてくるね。
0630デフォルトの名無しさんNGNG
自分は下等生物ですっていってるようなことかくなっちゅーに
0631デフォルトの名無しさんNGNG
>>621
何逝ってんの?基地害?
0632デフォルトの名無しさんNGNG
下等生物とは>>630のことだが
0633デフォルトの名無しさんNGNG
>>630は加藤
0634デフォルトの名無しさんNGNG
ボタンを押すと
マン毛をかくプログラム

procedure TForm1.Button1Click(Sender: TObject);
var a,b,x,y,z:integer;
begin
randomize;
for x:=0 to 1000 do
begin
a:=random(Form1.Width);
b:=random(Form1.Height);
y:=Random(Form1.Width);
z:=Random(Form1.Height);
Canvas.MoveTo(a,b);
Canvas.LineTo(y,z);
end;
end;
0635デフォルトの名無しさんNGNG
>>634
300kb近いから小さい実行ファイルとは言い難いな。
0636デフォルトの名無しさんNGNG
http://www.vector.co.jp/soft/dl/win31/prog/se025210.html
0637デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: PObj);
var a,b,x,y,z:integer;
dc:hdc;

begin
dc:=GetDC(Form.Handle);
randomize;
for x:=0 to 1000 do
begin
a:=random(Form.Width);
b:=random(Form.Height);
y:=Random(Form.Width);
z:=Random(Form.Height);
MoveToEx(dc,a,b,nil);
LineTo(dc,y,z);
end;
ReleaseDC(Form.Handle,dc);
end;

KOLのCanvasの使い方がよくわからないんでAPIにしちゃったけど、これで16,384バイト。
0638デフォルトの名無しさんNGNG
/* Button1をクリックするとButton2がランダムに表示され */
/* Button2を反射神経でクリックするとゲーム終了するゲーム */
/* コンポーネントはボタン2個、タイマー1個です */

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.BorderStyle:=bsNone;
Form1.WindowState:=wsMaximized;
Timer1.Enabled:=False;
Button2.Visible:=False;
Timer1.Interval:=500;
randomize;
end;

//画面を最大化して、できるだけ広く使います
//終了するときはALT+F4キーを押してください

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;
begin
x:=random(Form1.Width);
y:=random(Form1.Height);
Button2.Visible:=True;
Button1.Visible:=False;
Button2.Left:=x-50;
Button2.Top:=y-100;
end;
0639デフォルトの名無しさんNGNG
続き

//ボタン2を0.5秒ごとにランダムな場所に出現させます

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage('おしまい');
Form1.Close;
end;
0640デフォルトの名無しさんNGNG
randomってマイナスにはならないの?
0641デフォルトの名無しさんNGNG
なりません、はい次!
0642デフォルトの名無しさんNGNG
>>637
D6Personal+KOL1.80でコンパイルしてみたけど、24KBになったよ。
D7なら16KBになるとか?
0643637NGNG
>>642
私も同じ環境です。
ただKOLのSystem units replacementというのを入れてるので小さくなったようです。
試しに外してコンパイルしてみたら、24,576バイトになりました。
0644642NGNG
>>643
なるほど、さっそく入れてみたら16KBになったよ。
サンクスコ
0645デフォルトの名無しさんNGNG
http://pitecan.com/fugo.html
これ読んで改心しました。
0646デフォルトの名無しさんNGNG
>>645
そんなの間に受けるなよ。
0647デフォルトの名無しさんNGNG
>>646
本当にそう思っているの?
あのページ見て、「冗談もほどほどにしろ」なんて一瞬でも思ったなら、
一度自分のコードを見直したほうがいい
0648デフォルトの名無しさんNGNG
>>647
いや、そうでもないだろ。
「一番単純で短いアルゴリズムを使います。」なんて書いてるが、
いくら単純でも O(n^3) なアルゴリズムなんて使うか?
0649デフォルトの名無しさんNGNG
場合による
0650デフォルトの名無しさんNGNG
必要に応じて
0651デフォルトの名無しさんNGNG
>>645
のページより

>カーネギーメロン大学で開発されたAmuletというツールキットを使うと
> ``Hello, world''とウィンドウに表示するプログラムのサイズが5MBになります。
>素敵な富豪感覚ですね。

delphi も所詮中産階級のようです。
0652デフォルトの名無しさんNGNG
>>648
使わない。
富豪的以前の問題で、ライブラリのソート関数使うだけ。

もうちと答えに詰まるような例えにしてくれ。面白くない。
0653デフォルトの名無しさんNGNG
勘違いしてもらうと困るが、富豪的プログラミングは、
富豪的に資産を使うのが目的ではなく、
より早く目的に達成するために、富豪的なプログラミングを許すということ。
0654デフォルトの名無しさんNGNG
>>652
アルゴリズム=ソートかよ。
夏だな。
0655山崎 渉NGNG
(^^)
0656デフォルトの名無しさんNGNG
>>652
面白いとか面白くないとか
そういうスレじゃねえんだよ
0657デフォルトの名無しさんNGNG
夏だな
0658デフォルトの名無しさんNGNG
スレ違いですが、Mersenne Twisterの乱数って、Delphiのシステム乱数よりも早いですか?
0659 NGNG
なんでスレ違いの質問するんですか?
0660デフォルトの名無しさんNGNG
バカだから
0661デフォルトの名無しさんNGNG
toste
0662デフォルトの名無しさんNGNG
>>659
夏だから
0663デフォルトの名無しさんNGNG
遅レスだけど、
634にかなり感動した。&爆笑してしまった。
0664デフォルトの名無しさんNGNG
作ったやつは ここで うぷしよう!

http://bluetree.2.pro.tok2.com/monjyu/up/up.cgi

って 削除されたら しらん
0665_NGNG
http://homepage.mac.com/hiroyuki44/jaz10.html
0666デフォルトの名無しさんNGNG
おまえら貧民なの?
0667デフォルトの名無しさんNGNG
>>663
ボタンを数回押したらすごい剛毛になってしまいますた
0668デフォルトの名無しさんNGNG
夏だから言いたいだけちゃうんかと
0669デフォルトの名無しさんNGNG
台風だから
0670山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0671デフォルトの名無しさんNGNG
納得できん。もっとすじまんなめて説明してくれ。
0672デフォルトの名無しさんNGNG
保守
0673デフォルトの名無しさんNGNG
procedure Dump2HD( pos:Integer ; sout:TStrings );
var h:THANDLE;
var i,x,y:Integer;
var dt : array[0..511] of byte; //2HD 512byteセクタ用
var siz:DWORD;
var s:string;
var w:string;
begin
 h:= CreateFile ('\\.\A:',GENERIC_READ, FILE_SHARE_READor FILE_SHARE_WRITE ,nil, OPEN_EXISTING,0,0 );
 if h=THandle(-1) then exit;
 SetFilePointer( h , pos,nil, FILE_BEGIN);
 try
 if ReadFile(h,dt,Sizeof(dt),siz,0) then begin
  i:=0;
  for y:=0 to length(dt) div 16-1 do begin
  s:=IntToHex(pos,4)+';';
  w:='';
   for x:=0 to 16-1 do begin
   if x<>0 then s:=s+' ';
   if Char(dt[i]) in [' '..'z'] then w:=w+Char(dt[i]) else w:=w+'・';
   s:=s+IntToHex(dt[i],2); inc(i);inc(pos);
   end;
   sout.Add(s +w);
  end;
 end;
 finally CloseHandle(h); end;
end;
0674デフォルトの名無しさんNGNG
varがやけに多いな
0675デフォルトの名無しさんNGNG
単にUPXなんかでexeをパッキングすればいいだけちゃうの?
0676デフォルトの名無しさんNGNG
UPX と比べて、2倍から10倍程度小さくなる。
0677デフォルトの名無しさんNGNG
このスレでC使えとかUPX使えとかPC買い換えろとか何の意味があるんですかとかって指摘は野暮ってもんだ。
0678デフォルトの名無しさんNGNG
PC買い換えろ??
0679デフォルトの名無しさんNGNG
PC買い換えろ???
0680デフォルトの名無しさんNGNG
UPXを使えという奴は馬鹿。
あれは、ハードディスクの使用率をちょっと少なくするという利点だけで、
起動時間が遅くなり、使用メモリも増加する。
0681デフォルトの名無しさんNGNG
どなたか>>634をコンパイル&UPしてくださいませ。
0682デフォルトの名無しさんNGNG
>>680
ハードディスクよりメモリのほうが速い。
メモリ消費は確かに増えるがな。とくにDLLを圧縮すると
共有されるものもされなくなる。
0683デフォルトの名無しさんNGNG
だがそれがいい
0684デフォルトの名無しさんNGNG
DLLってNT系列のWindowsでも共有されるの?
0685デフォルトの名無しさんNGNG
>>684
書き込んだとき初めて独自にページが割り当てられて、
それまでは共有される(copy on write)。
UPXは圧縮解除のために全領域にわたって書き込みを行うから
まったく共有されなくなるわけ。
0686デフォルトの名無しさんNGNG
>>684 デフォルトでは {$IMAGEBASE $00400000} となっているので
デフォルトのままのDLLを複数のアプリがロードすると 当然同じアドレスにロード出来ない。
そうすると、別のアドレスに割り当てられられた方は実メモリを必要とする
0687デフォルトの名無しさんNGNG
リロケーションのためにコードセグメントに書き込む必要があるからね
0688デフォルトの名無しさんNGNG
というわけでdll作る時はてきとーな値に変えるように
0689デフォルトの名無しさんNGNG
小さな実行ファイルでもバッファオーバーフロー
0690デフォルトの名無しさんNGNG
>>689
馬鹿?
0691デフォルトの名無しさんNGNG
共有されないって用途によってはひょっとしてすごくいいんじゃない?
変数に名前つきメモリ空間とか使わないで済むじゃん。
不定期ローテク講座参照。
0692デフォルトの名無しさんNGNG
> 変数に名前つきメモリ空間とか使わないで済むじゃん。
いや普通でも使わなくて済むが。区別する必要ができたらその時点で
共有されなくなるんだから。普通はメモリマネージャの中の人を
意識する必要はない。
「必要もないのに」共有されるからメモリの無駄遣いなの。
0693デフォルトの名無しさんNGNG
わかりやすいKOL導入ガイド
http://www.geocities.co.jp/SiliconValley-Sunnyvale/3282/
0694デフォルトの名無しさんNGNG
わかりやすいKOL導入ガイド
http://www.geocities.co.jp/SiliconValley-Sunnyvale/3282/
0695ScrollBarを探していた男NGNG
ScrollBar は未実装だった。
0696デフォルトの名無しさんNGNG
Delphiで小さなバッファオーバーフローを作ろう
0697デフォルトの名無しさんNGNG
たまに保守
0698デフォルトの名無しさんNGNG
ところで、何でKOLはファイルサイズが小さくなるのでしょうか?
0699デフォルトの名無しさんNGNG
いらないと思われる機能を削ったから。> 698
VCL と同じようなことをしようとすると、結局似た大きさに戻る
0700デフォルトの名無しさんNGNG
>>698
たとえばあるユニットのある関数だけ使った場合、
使ったユニットの分だけ大きくなるのではなく、使った関数の分だけ大きくなる。
SysutilsやClassesといった、usesするだけでサイズが増えるユニットは、
Initialization部分などで関数や変数を使っているからだ。
と、フサギコに教わった。

普通にVCLアプリを作ると、ウィンドウ一つ作るのに多数のユニットを使っていて、
Initializationも多数あるし、クラスもたくさん使っているため、
実行ファイルははじめから数百KBになってしまう。
ところが、KOLの場合、KOL.pasだけでウィンドウを作れるので実行ファイルが小さい。
usesしているWindowsとMessagesは定数ならべるにすぎないユニットなので肥大しない。
クラスはすべて名前変えただけのTObj型なのでこれも肥大しない理由。

当然だが、サイズが小さい分、実装している機能も少なく、>>699のような結論。
0701デフォルトの名無しさんNGNG
Delphi1のころのPC環境(CPU:100MH, HDD:2G)と今のPC環境(CPU:3000MH, HDD:200G)を比較すると
相対的に無茶苦茶EXEのサイズ小さくなってるよな。
0702デフォルトの名無しさんNGNG
HDの容量単価で計算すると
昔 2GBytes 1万円とすると、0.0000046566 円/Byte
今 100GBytes 1万円 とすると、0.0000000931 円/Byte

Delphi+VCLの素組みアプリが400KBytesだとすると、
昔 約 1.91 円
今 約 0.04 円
0703デフォルトの名無しさんNGNG
ハードディスク占有率下げたくて小さいアプリ作りたいヤツはいない。

(ユーザーから見て)同等の機能を有する二つのソフトが、
500KBと50KBだったら、ハードディスク空いてても50KBの方を使っちゃう。
起動の時ガリガリガーモサッてソフトと、ジパッってソフトがあれば速いほう使っちゃう。
MsOfficeの同等品がダウンロード2秒のフリーソフトで存在すれば使っちゃう。
大した違いがなくてもユーザーは常に比較してるものだ。
プログラマでもないのにワープロとエディタ使い分ける人がいるんだから、
小さいEXEに対する需要も有り続けると思う。
0704デフォルトの名無しさんNGNG
大きい小さいは、個人の主観だろ
0705デフォルトの名無しさんNGNG
サイズが大きい小さいのスレだっけか?ここ
0706デフォルトの名無しさんNGNG
↑ サイズに自信がないんでしょ
0707デフォルトの名無しさんNGNG
>703
結構な数のフリーソフト使ってきたけど、Exeサイズで比較したことなんかないぞ
動作の軽快さとか、実際の使用に関ってくる部分といっしょにするなよ
0708デフォルトの名無しさんNGNG
>>707
君はO型なんでしょう。A型の人のことはわからないと思われ
0709デフォルトの名無しさんNGNG
>708
すげえ、当たりだ

でも、>703も50kと500kのアプリで、明らかに500kの方が使い勝手がよければ
確実に500kの方を使うんだろうし、結局たいした意味は無いと思うけどね<Exeサイズ

同等の機能、同等の使い勝手なら、俺はExeサイズよりもアプリの見栄えを優先するな。
あとは配布してるHPなんかも結構重要だったりする。
0710 NGNG
procedure 願望;
begin
オレ.イチモツ.size:=1000000;
end;
0711デフォルトの名無しさんNGNG
delphiは日本語識別子通らないだろ
0712デフォルトの名無しさんNGNG
日本語版なら通る。
0713デフォルトの名無しさんNGNG
[ヒント] 願望.pas(3): 変数 'イチモツ' が宣言されていますが '人生' の中では使われていません
[警告] 願望.pas(3): 'カリ'が必要な場所に識別子 '皮' があります
[エラー] 願望.pas(3): 指定された引数で呼び出すことができるオーバーロード関数 '彼女' が定義されていません
[エラー] 願望.pas(3): 'smallchinko型' と 'largechinko型' には互換性がありません
[致命的エラー] '願望.pas' ユニットはコンパイルできませんでした
0714デフォルトの名無しさんNGNG
>>713 GJ!
0715デフォルトの名無しさんNGNG
>>714 GJ!
0716デフォルトの名無しさんNGNG
>>5
この方法で小さなEXEつくると
Indyとかの通信ようコンポーネント使えますか?
無理ですよねぇ?
0717デフォルトの名無しさんNGNG
>>716
WinSock使え。Win32APIな
0718デフォルトの名無しさんNGNG
>>716
使えるよ。大きなEXEになるけど。
0719デフォルトの名無しさんNGNG
俺思うんだけどさあ、小さいEXEがいいかどうかってのは、美意識の問題なんだよ。
だから、1バイトあたりいくらだとかいう経済的な話は全く関係ないんだよね。
小さい方が美しい、それだけだよ。
0720デフォルトの名無しさんNGNG
無駄の少ない美しいコード〜ってことかな?
0721デフォルトの名無しさんNGNG
オブジェクト指向は無駄だらけw
0722デフォルトの名無しさんNGNG
昔はサイズを気にしてたけど、今はメモリ1.5GBのHDD1TB超なので
気にしなくなった。
0723デフォルトの名無しさんNGNG
USBメモリとかに詰める人にとっては未だにサイズの削減は必須課題らしい
0724デフォルトの名無しさんNGNG
FDに比べたら十分大きいでしょ -> USB フラッシュ
0725722NGNG
俺が作るソフトはFD1枚に入らないのは皆無だがw
0726デフォルトの名無しさんNGNG
手伝ってくれる方キボンヌ
http://program.dot.thebbs.jp/1071486463.html
0727デフォルトの名無しさんNGNG
質問です。
全くのプログラミング知識0から初めて、次のようなことを
実行するプログラムを作りたいのですが、まず手始めに、
どのようなサイト等で勉強すればよいでしょうか。アドバイス
いただけると助かりますm(_ _)m

使用ソフト  Delphi6 personal
プログラムの内容、 aというファイルにおいて、
バイナリの一部をXorさせた値を、あるアドレスに書き込み、
ある場所のバイナリを書き換えて、b というファイルを出力
する

0728 NGNG
http://pc2.2ch.net/test/read.cgi/tech/1071294733/
>>727
0729デフォルトの名無しさんNGNG
俺は自己満足にすぎないけど小さくしたい。
特に、自分で作ったものと同等の他社ソフトのサイズが小さいと燃ゆる。
他社ソフトが大きいと勝手に優越感。
あと、関係ないけどバグのあるライブラリをそのまま使ってる他社ソフトにも勝手に優越感。
0730デフォルトの名無しさんNGNG
サイズが小さいと軽いっていうやつが多いからな。
いまだにVB製のメモ帳が軽さをウリにしてるし。
0731デフォルトの名無しさんNGNG
VBってランタイムも考えるとサイズかなり大きいじゃん・・・・
現実はそんなもんか。
0732デフォルトの名無しさんNGNG
>>713
彼女はvirtualか、、、
0733デフォルトの名無しさんNGNG
>>732
童貞はいつまでたっても抽象クラスってことか
0734デフォルトの名無しさんNGNG
>>733

unit Who;

interface

type
 TWho = class(TMan)
 private
  procedure Lover; virtual; abstract;
 public
  procedure Friend; virtual; abstract;
 end;

implementation

uses RightHand;

end.
0735デフォルトの名無しさんNGNG
オレはシンプルなアプリの場合はHalbow氏のTAPIWindowを使ってる。
KOLほど小さくはならないけど、KOLほどクセが無いのでちょうどいい。
0736デフォルトの名無しさんNGNG
オレはシンプルなアプリの場合はBorland謹製の実行時パッケージを使ってる。
KOL以上に小さくなる上に、KOLほどクセが無いのでちょうどいい。
0737デフォルトの名無しさんNGNG
>>736
それ小さくなったとは言わないだろ・・・
0738デフォルトの名無しさんNGNG
>>736
本当だ、僕のモンスターがこんなに小さくなっちゃったっ!!
0739デフォルトの名無しさんNGNG
>>736
BCBで試したら出来たヨ!
400KBあったアプリがなんと十分の一以下に!ワァオ♥
0740デフォルトの名無しさんNGNG
>>735
俺も使わしてもらっているんだけど、
TAPIWindowって20バイトのメモリリークがあるんだよね。
どこでメモリリークを起こしているかわからないだよな。
0741デフォルトの名無しさんNGNG
>>740
確認してみたがしてなかったよ。
0742デフォルトの名無しさんNGNG
メモリーリークってどうやって調べるの?
0743デフォルトの名無しさんNGNG
>>742
メモリー関係なら
PMemoryManager のメンバー(関数ポインタ) をフックして調べればいいじゃない
0744デフォルトの名無しさんNGNG
あ、GetMemoryManager SetMemoryManagerで設定するんだったか
0745デフォルトの名無しさんNGNG
一番簡単なのは、終了時にAllocMemCount と AllocMemSize をチェックすることかな

後は、堀さんのMemCheck.pas を使うとスタックトレース有効にして使うのも便利なんだけど、
1つでもスタックトレースなしでコンパイルされているライブラリが、
あったりすると動作不良起こすので、事実上使えないのが悲しい
0746デフォルトの名無しさんNGNG
マジ?
http://halbow.cool.ne.jp/
0747デフォルトの名無しさんNGNG
事情により、このホームページを閉鎖します。
予想外の多くの方々が訪れて頂き、ありがとうございました。

Halbow
0748デフォルトの名無しさんNGNG
予想外の多くの方々が荒らしたわけだ
0749デフォルトの名無しさんNGNG
あらら。な、なんで?ずいぶん急だなぁ。理由が書いてないね。
0750デフォルトの名無しさんNGNG
GetHTMLしておきゃよかった(´・ω・`)
読んでる途中だったのに(´・ω・`)
0751デフォルトの名無しさんNGNG
オレも。
0752デフォルトの名無しさんNGNG
HTMLヘルプ版落としておいてヨカッタ
0753デフォルトの名無しさんNGNG
HTMLヘルプ版、よく見たら転載OKになってるね。
どこかにうpしたいけど、うpろだ知らないし、ナローバンドじゃマンドクサ('A`)
0754デフォルトの名無しさんNGNG
ほれ
http://up.isp.2ch.net/up/8475198a57b6.lzh
0755デフォルトの名無しさんNGNG
ワイー
0756Delフサギコ ◆A6VzDeLphI NGNG
           _________
   ∧,,∧   /2002年5月から 
  ミ,,゚Д゚彡 < 更新されてないの?
   ミ つ旦)~~ \ 
 @ミ   ミ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪
0757デフォルトの名無しさんNGNG
なんかワンポイント講座みたいなので最近更新したところがあったよね。
去年の11月くらいだったかな。ああ保存しておけばよかった・・・。
0758デフォルトの名無しさんNGNG
>>756
お前が2chで叩くからこんなことになったんだよ
反省しろ反省を
0759Delフサギコ ◆A6VzDeLphI NGNG
           _________
   ∧,,∧   / はぁ? 頃スゾ氏ネ>>758
  ミ#゚Д゚彡 < 俺はHal氏をたたいた
   ミ つ旦)~~ \  ことはねーぞ
 @ミ   ミ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪   尊敬こそすれ、なぜ叩かねばいかん。
     駄みたいに何も貢献してない奴ならともかく。
     ああいう人にはずっと続けてほしかったな。

     勝手に勘違い厨がたたいてただけだろ
0760デフォルトの名無しさんNGNG
ヲイヲイ
おめーら仲間割れかよ(笑)
0761デフォルトの名無しさんNGNG
作者は実装例の一つとして参考にすることを望んだが、
ユーザーはそのまま使えるライブラリを望んだ。
各自でどうにかすべきことを作者に要求し、
掲示板が2chみたいになっちゃった。
といういきさつでしたとさ。
0762デフォルトの名無しさんNGNG
ぐぐってて結局Halbow氏のサイトに行き着いて、お世話になるって事が少なくなかったので、
Halbow氏のサイトが無くなるのはけっこう痛いなぁ。
0763デフォルトの名無しさんNGNG
ハゲドウ
0764デフォルトの名無しさんNGNG
掲示板があったなんて知らなかったよ。
0765デフォルトの名無しさんNGNG
そのまま使ってるヤツなんていたのか・・・
0766デフォルトの名無しさんNGNG
googleにキャッシュが残っていたよ
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&q=+site:halbow.cool.ne.jp+halbow
0767デフォルトの名無しさんNGNG
日記書いてたんだねぇ<キャッシュ
2003年11月22日(土)に「delphiに興味が無くなってきたうんぬん」って
書いてある。

ハンドルネタ面白いけど、複雑。
0768デフォルトの名無しさんNGNG
>>756
HTMLHelp版のはちょと古いまんまだよ。
0769デフォルトの名無しさんNGNG
Help版にはNotesシリーズがないしVCLも1章しかないけど、今ならGoogleキャッシュから何とか回収できる。
0770ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
回収きぼんぬ。
0771デフォルトの名無しさんNGNG
Halbow氏とMr.XRAY氏に感謝。
0772デフォルトの名無しさんNGNG
マジ感謝。
0773デフォルトの名無しさんNGNG
GetHTML完了しますた。
0774デフォルトの名無しさんNGNG
http://web.archive.org/web/20021127201409/halbow.cool.ne.jp/
ほれ
0775デフォルトの名無しさんNGNG
掲示板はキャッシュされてないかな?
ほんとに荒れてたの?
0776デフォルトの名無しさんNGNG
>>775
Haibowさんの「最近はdelphiには興味がなくなって、VC#などをいじるようになってきた」みたいな書き込みに対して、
「あなたは落ちこぼれたんだ。Delphiマンセー」と噛み付いてきた奴はいた。
サイトをもうすぐ閉じると書いた後の話だけどね。
0777デフォルトの名無しさんNGNG
ハイボーさんキター
0778デフォルトの名無しさんNGNG
ちょっとワラタ<ハイボーさん
0779デフォルトの名無しさんNGNG
世界のヘイポー
0780デフォルトの名無しさんNGNG
776 の指摘する書き込みは、そんなにひどいものではないと思ったよ。
「使いもしないで .NET を否定するのは、新しいものを否定しているだけではないか」という程度の内容。

で、荒らされたんじゃなくて、Delphi-ML の個人を馬鹿にする記事を Halbow 本人が
書いちゃって、それが即本人に伝わり「諸般の事情で閉鎖」となったんです。

独り言コーナーでも、ML の何人かに対する不満を愚痴愚痴つづっていたし。
吐駄がいなけりゃねぇ
0781デフォルトの名無しさんNGNG
そっそっソース♪ソースはどっれっ♪
0782ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ

もう公開終わりなの?
>>774

せっかくダウソしようと思ったのに…
0783デフォルトの名無しさんNGNG
http://homepage2.nifty.com/Mr_XRAY/Halbow/
0784デフォルトの名無しさんNGNG
>>783
そのハンドルの人、そこそこ見るけど、その人が受けついだんかー。
一子相伝(?)。
0785デフォルトの名無しさんNGNG
たぶん別人だと思うけど、
春坊と同じような掲示板で似たような口調で回答つけているんだよなぁ。
0786デフォルトの名無しさんNGNG
APIのみでUnicodeWindowを作り、タイトルバーも文字入力もユニコード化出来たのですが、
メニューだけどうしてもユニコードになりません。
メニューはVSでデザインしてリソース化したんだけど、
コードページ1200は出来ませんとか言われるし、
InsertMenuWで手動で構成してもダメみたいです。
何か足りないのかな?
0787デフォルトの名無しさんNGNG
>コードページ1200は出来ませんとか
リソースコンパイラに対する指定だと思うけど、たぶんそれが原因。
メニューと文字列(ストリング)リソースは常に UNICODE で格納されます。
リソースコンパイラに指定するのはソースコードのコードページ
0788786NGNG
VSでニュートラルとか既定とかを選んでもユニコードにできなかったから、
いったん.rcに変換して#pragma code_page(932)を1200に変えたりなど小細工したらVSでも読めなくなった。
そんな話してるんじゃないんだよ。
リソースで埋めようが、APIでメニューを作ろうが、どうしてもメニューだけは、
どれか一カ国語でしか挿入できなかったっていってるんだよ。
紛らわしくてすまんね。
メニューにも中途半端ユニコードウィンドウみたいな概念はあるのかね?
0789デフォルトの名無しさんNGNG
VCL いっさい使っていないよね?
メニューはキャプションと同じでウィンドウズが管理するから、アプリケーションそのものも
UNICODE ウィンドウになっていないといけないよ?

つーことで、確認。キャプションに任意の文字は表示できますか?
0790786NGNG
VCLどころかsysutilsも使わず、関数指向で作ってる。
タイトルバーはハングル混じり日本語可能です。
貼り付けてある複数行エディットの右クリックメニューにはユニコード用項目あり。
ハングルページからのコピペも可能。
VSのデザイナーでハングル混じり日本語メニューが、ハングルだけ??になるので、
InsertMenuWで#$xxxx+#$xxxx+'日本語'を挿入するが、やはり??日本語になる。
フォントに問題があれば「・・日本語」になるが、?はOSがANSI変換できない場合に出る。
つーわけで、どこか中途半端ユニコードかなと確認中だけど、
そもそもメニューに多言語って表示できるの?と疑問。
MSDNには複数言語で別のリソース使いわけろと書いてあるけど。
0791デフォルトの名無しさんNGNG
InsertMenuW を使っているのなら、リソースの話は関係ないですね?
複数言語対応のリソースに関しては、SDK のドキュメントを。とりあえずニュートラルにしておけばどの状態でも読み込まれる。

なんかメニューウィンドウが ANSI になっているようですね。
あなたのコードが読めないから何ともいえないけど、-GD オプションつけて .map ファイル出して、
A バージョンの API を呼び出していないか確認してみませんか?
0792786NGNG
>-GD オプションつけて .map ファイル出して
これわかりません

exeをバイナリエディタで開いたら
GetStartupInfoA
GetCommandLineA
GetModuleHandleA
GetModuleFileNameA
CharNextA
GetStringTypeExA
GetModuleFileNameA
GetLocaleInfoA
GetDiskFreeSpaceExA
GetObjectA
SystemParametersInfoA
SendMessageA
LoadCursorA
A付きはこれだけありました。SendMessageAが気になるところですが、
まだGrep確認中で見つかってません。
0793デフォルトの名無しさんNGNG
DCC32 コマンドラインコンパイラを使っているのかと...
IDE 使っているのならリンカページに対応する設定があると思う。

あと TDUMP ってのも使えると思うぞ。

で、SendMessageA が臭いね。これを誰が呼び出しているのかを調べるのが最初かな?
0794786NGNG
おかげさまでだいぶAを削除できたぜ。
しかしメニューはやっぱりまだ??なんで、どっかで凡ミスしてると踏んで、
も一回クラス登録から見直してみます。
そこそこ有益な情報ありがとうよ。
0795デフォルトの名無しさんNGNG
IsWindowUnicode試してみた?
RegisterClass(Ex)W使ってる?
0796デフォルトの名無しさんNGNG
>>795
A 付きは全部チェックしたといっているし、キャプションは正常っぽいから
RegisterClassW は使っているかと思うが。LoadMenuA を使っている用に思えるの
だが。
0797786NGNG
すまん、ちと野暮用でしばらくいじれなくなりました。
もうA付きはhInstanceに使われてるGetModuleHandleAのみ。
最初にメニューがユニコード化できてないことに気がついたとき、
LoadMenuAからLoadMenuWに変えた。
それまではリソースの名前をVSで"MENU"にしていて、
読み込めなくなったので数字に変えてみたら読み込めた。
これでユニコード文字表示できるか、と思ったら??のままだったって感じでしたぜ。
$#xxxxがsjisの文字なら表示できるのだがなぁ。
つーかスキー&セックス行ってくるから次の報告遅れます。
0798デフォルトの名無しさんNGNG
なんで#define UNICODEしないの? と思ったらDelphiスレか
0799デフォルトの名無しさんNGNG
Windows.pasでユニコード版の宣言が間違っていたりするが、
VCLがAnsiしか使わないので気がついていないDelphiのスレだよ
0800デフォルトの名無しさんNGNG
900
0801デフォルトの名無しさんNGNG
まだ800ですよ?
900のとき1000って書くための布石ですか?
0802786NGNG
InsertMenuWもVSで作ったりソースも、未だユニコードになってくれません。
が、どちらを使った場合でも、いったんメニューを挿入した後、
AppendMenuWで、キャプションを書き換えた場合はユニコード表示できました。
何がおかしいのかまだわからないけど、当面これで二度手間すれば解決です。
訳わからんことばっかりやっててごめんな。
0803786NGNG
APIでエディットコントロールを扱うと、折り返すというウィンドウスタイルがなく、
水平スクロールするかどうかを設定して再生成するところまでわかりました。
当然折り返し変更するたびにUndo出来なくなりますが、VCLはなぜかUndoできます。
VCLのTMemoやTRichEditでも、WordWrapを切り替えるたびにウィンドウを破棄しているようですが、
Undoの情報を再生成したウィンドウに受け渡してる部分が見つかりません。
どうやって、次のウィンドウでもUndo出来るようにしますか?
0804デフォルトの名無しさんNGNG
へえ、そんな事考えた事も無かったな。 
0805デフォルトの名無しさんNGNG
良く、C++で出来ることはDelphiでも出来るって聞くんだけど、実際のところどのくらい低レベルなとこまでかけるの?
OSとかデバイスドライバクラスもいける?
0806デフォルトの名無しさんNGNG
ヘッダとかランタイムスタートアップの問題で実際にはムリだけど
言語としては問題なし。
0807デフォルトの名無しさんNGNG
C/C++も、その範囲だけではブートコードや、デバイスドライバが書ける訳ではない。
リンカーで配置アドレスを指定したり、デバイスドライバである事を示すマークを付けなければいけない。
ブートコードを書く時はCOFFを書き込むツールを作る必要がある時もある

Delphiは高速コンパイルの為に、コンパイル+リソースコンパイル+リンクを一度にやってしまう。
しかし、objも吐けるし、dcrを自分で処理すれば、そりゃ何でも出来る。
ただ、普段が便利なぶん、そういうノウハウが蓄積されないからあまりやる人がいない。
0808デフォルトの名無しさんNGNG
後、C/C++の場合、ランタイムを使わずに書く事が出来る。スタートアップコードだけ用意すればいい
例外サポートも例外を書かなければ空にすればすむ

Delphiの場合、空にすればいいといっても結構沢山のランタイムを用意する必要がある。
例外についても文字列を手続内で使うと自動的に使われてしまうので、
これもサポートしなければいけない。
出来ると言っても、最初の敷居が高い。
これを乗り越えれば書けるけど、乗り越えられるのはDelphi以外に低レベルな部分のノウハウを積んでる必要がある。
0809デフォルトの名無しさんNGNG
で、この敷居を乗り越えるのはほとんど自分の力でやる必要があると。
ただでさえ少ないDelphiの本や情報が、低レベルなんて誰も
やらないようなことだとさらに少ない。
0810デフォルトの名無しさんNGNG
でもまあ、情報が少ないから勉強になるとは思うよ。
実際デバイスドライバ作ってますなんてのも、仕事だとコードコピーしてちょっと直すだけで、
普通のWinアプリ作るのと同じ。あんまり勉強にはなんない。
0811デフォルトの名無しさんNGNG
0812デフォルトの名無しさんNGNG
>>701-702
0813デフォルトの名無しさんNGNG
>>719
0814Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧  やあ、ご無沙汰です。
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)

えっと、TaskTray常駐アプリで
Formを使わないタイプのサイズの小さい
アプリを作る方法、教えて欲しいです。

どこかに参考となるページとか紹介されてませんか?
0815Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧  やあ、ご無沙汰です。
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)

えっと、TaskTray常駐アプリで
Formを使わないタイプのサイズの小さい
アプリを作る方法、教えて欲しいです。

どこかに参考となるページとか紹介されてませんか?
0816デフォルトの名無しさんNGNG
フサギコさんともあろうお方が連投までして…

KOLぢゃだめなの?
0817Delフサギコ ◆A6VzDeLphI NGNG
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ごめんなさーーーーい

KOLでTrayアイコンアプリは
作れるでしたけ?

アンインスコしちゃったからなあ…
0818デフォルトの名無しさんNGNG
>>814
ttp://okapony.hp.infoseek.co.jp/download/index.html
の「小さいタスクトレイ常駐アプリケーションを作りたい!!」を参考にするとよろし。
中で、Classes.pasとSysUtils.pasを使っているので思ったより小さいサイズにはならないけど。
0819デフォルトの名無しさんNGNG
フサギコっていくつなの?
最近特にボケてきたよね。
0820Delフサギコ ◆A6VzDeLphI NGNG
         
    ∧,,∧   ありが�d
   ミ*゚Д゚彡 うまくいきそうでつ。
   ミ つ日  
 .@ミ,,,,,, ,,ミ

常駐ソフトって、exeサイズがメモリ上に展開されっぱ(?)だから
いまだに、ちっちゃい方が助かるですよね。
VCL系を3つも起動してると
なんか体感的に重くて…

>>819
・・・・ミ;゚Д゚彡・・・・ヒ...ヒミツ....
0821デフォルトの名無しさんNGNG
某ソフトはイメージサイズが10MBか15MBくらいあるんだよな
0822デフォルトの名無しさんNGNG
.NET アプリはランタイムを入れると40MBだよ。
0823デフォルトの名無しさんNGNG
そのアプリの数が少ないから今のところ1ソフト辺りのサイズめちゃくちゃでかいよな
0824デフォルトの名無しさんNGNG
>>814
exeサイズを気にされるのなら
ttp://bonanzas.rinet.ru/e_adds.htm#Utilities
のBAPTrayIconがとても良いです。
サンプルも付いてるからすぐわかります。
KOLですけど。
0825デフォルトの名無しさんNGNG
system.dcuを空にしてコンパイルできれば
フルアセンブラで小さなexeを作れそうだが
問題はどうすれば空のsystem.dcuを作れるのか
0826デフォルトの名無しさんNGNG
なんか隠しオプションがあった。dcc32 -? system.pasとかできるの。なんだったっけ。
まあアルファベット全部試せば(ry
KOL用の小さなsystem.pasとかあったはずだから、それ見ればわかるかな

ところでフルアセンブラで書くなら、高級言語のインラインアセンブラじゃなくて、
普通のアセンブラをそのまま使った方がいいと思うのだが
0827825NGNG
隠しオプション?情報ありがとう。
>>普通のアセンブラをそのまま使った方がいいと思うのだが
Delphiで究極に小さいアプリを作ってみたいんです。
しかしインラインアセンブラでinvokeとif擬似命令が使えないから
やはりアセンブラか...?
0828デフォルトの名無しさんNGNG
Delphi8が届いたから実行ファイル(フォームのみ)のサイズを比較してみた。

*最新のアップデート(2004年7月現在)を適用済みの状態で作成
*下記のプロパティで統一(他のプロパティは初期状態の設定)

Caption : Delphi*(*はDelphiのバージョンの半角数字1文字)
Left : 0(Delphi8では8以下に設定をする事が不可能であるため8で設定)
Top : 0(Delphi8では8以下に設定をする事が不可能であるため8で設定)
Width : 320
Height : 240
Position : poScreenCenter
FormStyle : fsStayOnTop

Delphi1.exe : 195KB(200,448バイト) [Win16]
Delphi2.exe : 154KB(158,208バイト) [Win32]
Delphi3.exe : 174KB(178,688バイト) [Win32]
Delphi4.exe : 274KB(281,088バイト) [Win32]
Delphi5.exe : 285KB(291,840バイト) [Win32]
Delphi6.exe : 374KB(382,976バイト) [Win32]
Delphi7.exe : 359KB(367,616バイト) [Win32]
Delphi8.exe : 1.29MB(1,356,800バイト) [.NET]

Delphi1.exe : 16bitアプリケーションなのでNT系で実行をするとシステムが不安定になった。
Delphi2.exe : Delphi1〜Delphi8の全ての中でファイルサイズが1番小さくなった。
Delphi6.exe : Win98SEよりも古い9x系とWin2000よりも古いNT系では起動しなかった。
(クリーンインストール直後の状態で実行した結果であるためIE5以上を入れれば動く可能性あり)
Delphi8.exe : .NET専用アプリケーションなので例外ではあるがファイルサイズが1番大きくなった。

だから何?って感じですけど・・・KOLでもやってみようかな。
0829デフォルトの名無しさんNGNG
>>828
乙乙。是非KOLでもやって下さい。ついでにKOL+UPXの比較もやって欲しいです。
Delphi2+KOL+UPXならDelphi6の実行時パッケージ以下になるかも。無理か・・・

Delphi6で作った実行ファイルがIE5以下の古いWindowsで動かないのは
IE5以上のOLEAUT32.DLLが必要だからです。
IE5とかVB6とかOffice2000を入れれば動きます。
ちなみに一緒に配布しようとするとOLEAUT32.DLLだけで500KB超えちゃいます。

Delphi7で作った実行ファイルはIE5以下の古いWindowsでも問題なく動きます。
Delphi6をわざとうんこにしてDelphi7以上を買わせるBorlandの罠か?
0830デフォルトの名無しさんNGNG
Delphi8は.NETのランタイムを使うから、exeのサイズは小さくなるべきでは?
0831デフォルトの名無しさんNGNG
ランタイム使うの?
ボーランドも終わったな。
0832デフォルトの名無しさんNGNG
>>831
Delphi8を買うとDelphi7がもれなく付いてくるから
ランタイム不要のアプリケーションは一応作れるよ。
.NETアプリケーションを動かすには.NETパッケージが必要だから
Borlandに関係なくどんな開発環境でもその点は仕方がない。
.NETの未来には期待できないから終わったなと言われれば終わったかも。
なんかスレ違いになってきた。
0833デフォルトの名無しさんNGNG
>>828
おつかれ。
D6,D7はCLX, D8はWindows.Formsという選択肢もありますね。

もっとも、exeを小さくするのか、消費メモリを減らすのか、は、別問題…
0834828NGNG
>>830
>>833
参考にしてくだされ。

Delphi8で作成した実行ファイル

*最新のアップデート(2004年7月現在)を適用済みの状態で作成

VCL フォームアプリケーションの場合

[TForm]
Caption : Delphi8
Width : 320
Height : 240
Position : poScreenCenter
FormStyle : fsStayOnTop
(他のプロパティは初期状態の設定)

Delphi8.exe : 1.29MB(1,356,800バイト)

Windows フォームアプリケーションの場合

[TWinForm]
Text : Delphi8
Width : 320
Height : 240
StartPosition : CenterScreen
TopMost : True
(他のプロパティは初期状態の設定)

Delphi8.exe : 21.0KB(21,504バイト)
0835828NGNG
ついでに修正しました。KOLはちょっとまってね。

Delphi1〜Delphi8で作成した実行ファイル

*最新のアップデート(2004年7月現在)を適用済みの状態で作成
*下記のプロパティで統一(他のプロパティは初期状態の設定)
*Delphi8はVCL フォームアプリケーションを新規作成

[TForm]
Caption : Delphi*(*はDelphiのバージョンの半角数字1文字)
Left : 0(Delphi8は0に設定をする事が不可能であるため初期状態の設定)
Top : 0(Delphi8は0に設定をする事が不可能であるため初期状態の設定)
Width : 320
Height : 240
Position : poScreenCenter
FormStyle : fsStayOnTop

Delphi1.exe : 195KB(200,448バイト) [Win16]
Delphi2.exe : 154KB(158,208バイト) [Win32]
Delphi3.exe : 174KB(178,688バイト) [Win32]
Delphi4.exe : 274KB(281,088バイト) [Win32]
Delphi5.exe : 285KB(291,840バイト) [Win32]
Delphi6.exe : 374KB(382,976バイト) [Win32]
Delphi7.exe : 359KB(367,616バイト) [Win32]
Delphi8.exe : 1.29MB(1,356,800バイト) [.NET]

Delphi1.exe : 16bitアプリケーションなのでNT系で実行をするとシステムが不安定になった。
Delphi2.exe : Delphi1〜Delphi8の全ての中でファイルサイズが1番小さくなった。
Delphi6.exe : Win98SEよりも古い9x系とWin2000よりも古いNT系では起動しなかった。
(IE5やVB6やOffice2000等を入れてOLEAUT32.DLLをアップデートすれば動く可能性あり)
Delphi8.exe : .NET専用アプリケーションなので例外ではあるがファイルサイズが1番大きくなった。
0836デフォルトの名無しさんNGNG
実行時パッケージで作成した時のサイズと
最新バージョンのBPL(DPL)のサイズも知りたいな。
Delphi3とDelphi6は持ってるから分かるけど。
0837デフォルトの名無しさんNGNG
>>835のC++Builder1〜6のが知りたい
0838デフォルトの名無しさんNGNG
Delphi5を買って未だにShowMessage
ぐらいしか使ったことない、宝の持ち腐れだけど。

先輩方が書いてる軽量化の方法+UPXMaskを
使えば、もっと小さな実行ファイルが生まれるのかなー
とか、想像しちゃってます。
0839デフォルトの名無しさんNGNG
おまいは何のためにDelphi5を買ったんだw
0840838NGNG
うーん、その後にVC買ってしまって^^;
0841デフォルトの名無しさんNGNG
HDD大容量&ブロバン時代にプログラムサイズ競っても無意味。
そんなことよりもDelphiの未来を心配しろ。
0842デフォルトの名無しさんNGNG
無意味だけど、Delphiの未来より面白いだろ
0843828NGNG
実行時パッケージの比較です。KOLはもうちょっとまってね。

Delphi3〜Delphi7(実行時パッケージ)で作成した実行ファイル

*最新のアップデート(2004年7月現在)を適用済みの状態で作成
*下記のプロパティで統一(他のプロパティは初期状態の設定)

[TForm]
Caption : Delphi*(*はDelphiのバージョンの半角数字1文字)
Left : 0
Top : 0
Width : 320
Height : 240
Position : poScreenCenter
FormStyle : fsStayOnTop

[実行ファイル]
Delphi3.exe : 9.50KB(9,728バイト)
Delphi4.exe : 12.5KB(12,800バイト)
Delphi5.exe : 13.5KB(13,824バイト)
Delphi6.exe : 14.5KB(14,848バイト)
Delphi7.exe : 16.5KB(16,896バイト)

[実行時パッケージ]
[Delphi3] VCL30.DPL : 1.21MB(1,277,440バイト)
[Delphi4] VCL40.BPL : 1.79MB(1,884,160バイト)
[Delphi5] VCL50.BPL : 1.92MB(2,023,424バイト)
[Delphi6] vcl60.bpl : 1.26MB(1,323,008バイト) / rtl60.bpl : 656KB(672,256バイト)
[Delphi7] vcl70.bpl : 1.31MB(1,383,936バイト) / rtl70.bpl : 765KB(783,360バイト)
0844デフォルトの名無しさんNGNG
C++Builderの比較やってほしいなあ
0845デフォルトの名無しさんNGNG
>>844
スレ違いだからなあ・・・
Delphiなら2〜7を揃えて使い分けたいとは思うけど。
C++Builderを全バージョン揃える利点が感じられないし
VC++と併用してるけど結局VC++に移植してしまう事が多いよ。
C++BuilderにKOLみたいなのがあれば文句ないけどね。
0846デフォルトの名無しさんNGNG
>>841
>>842
ファイルサイズがMB超えるとメールに添付するのがためらわれるし
同じ性能でフロッピーに1個しか入らない大きさの実行ファイルと
何十個も入る大きさの実行ファイルだったら小さいほうが便利だよ。
USBメモリとかMOとかDVD-RAMとかでも書き込みや読み込みが速い方が便利でしょ。
釣られてみた。
0847デフォルトの名無しさんNGNG
>>846
>>841はそんなのはメリットとは言わない時代だと言いたいんじゃないのかな?
0848デフォルトの名無しさんNGNG
今の時代でも十分なメリットは沢山あるだろうよ。
>>846がメリットと思わない環境の方がまだ少ないんじゃないか?
Web上で公開する事を考えても小さければ小さい程良いよ。
アップロード時間やホームページ容量がさほど気にならなくなるし。
そもそも無駄に大きくて良い事は何一つないと思う。
0849デフォルトの名無しさんNGNG
>そもそも無駄に大きくて
VCLを使うのが無駄だと思うならDelphi使うなよばーか
0850デフォルトの名無しさんNGNG
>>849
お前の方がばかだろ。ばーか。
0851デフォルトの名無しさんNGNG
この糞スレはまだあったのか。
0852デフォルトの名無しさんNGNG
>>846
>>848
おまいらが正しいよ。キチガイは放置しとけ。
>>843
乙。KOLまだー?
0853デフォルトの名無しさんNGNG
>>848
あなたの28.8kbpsの環境ならかなりメリットあるでしょうよ。
Delで作るアプリでWeb上で公開するようなものに数十MBなんてことは無いだろうから
今時アップロードやダウンロードの時間を気にしているユーザーなんてのも皆無。
そんなにHPスペースが気になるならDelの議論するより、圧縮アルゴリズムの議論
でもしたほうがいいんじゃないか。

>>そもそも無駄に大きくて良い事は何一つないと思う。
無駄に大きいが簡単にできるのがDelの良いところだ。
0854デフォルトの名無しさんNGNG
ここの住人がVCLを使いまくってると勘違いしているキチガイがいるみたいですが
何をムキになって言っているのかさっぱり理解出来ません。
どうしましょうか?放置ですか?
0855デフォルトの名無しさんNGNG
基地外にかまうな。
ここはDelphiで小さな実行ファイルを作る議論をする所だ。
0856848NGNG
一つだけ言わせて下さい。
俺は>>850ではありません。勘違いしないで下さい。
他の人が釣られたのか>>849の自演です。それだけです。
0857デフォルトの名無しさんNGNG
皆分かってるから大丈夫だよ。変なのにからまれても気にすんなよ。
0858デフォルトの名無しさんNGNG
いまこのスレ全部読んだ。定期的に >>841 や >>853 みたいな書き込みがあるんだね。

いちばん感激したレスをコピペしておくよ。

719 :デフォルトの名無しさん :03/12/10 12:19
俺思うんだけどさあ、小さいEXEがいいかどうかってのは、美意識の問題なんだよ。
だから、1バイトあたりいくらだとかいう経済的な話は全く関係ないんだよね。
小さい方が美しい、それだけだよ。
0859デフォルトの名無しさんNGNG
UPXで小さくしただけじゃ美しくないと思う。
0860デフォルトの名無しさんNGNG
UPXで小さくするのはDelphiと無関係だからね
0861デフォルトの名無しさんNGNG
Cでスタートアップルーチンからすべて書くのが一番美しい。
Delphiなんて駄目駄目。
0862デフォルトの名無しさんNGNG
>>861
スレタイ嫁
0863デフォルトの名無しさんNGNG
Delphiでもスタートアップルーチンからすべて書けるよ
0864デフォルトの名無しさんNGNG
あせんぶらー
0865デフォルトの名無しさんNGNG
うん、うん、一度はアセンブラと書きたくなるよねー
でも、アセンブラで窓アプリ作った人はそんなにいないよ。Delphi でも
インラインアセンブラ使えるけどさ。
0866828NGNG
とりあえずKOLでの比較です。

Delphi2〜Delphi7(KOL)で作成した実行ファイル

*最新のアップデート(2004年7月現在)を適用済みの状態で作成
*KOL v1.90 21-Jan-2004/MCK v1.90 21-Jan-2004で作成
*下記のプロパティで統一(他のプロパティは初期状態の設定)

[TKOLProject]
dprResource : True

[TKOLForm]
Caption : Delphi*(*はDelphiのバージョンの半角数字1文字)
Left : 0
Top : 0
Width : 320
Height : 240
CenterOnScreen : True
StayOnTop : True

Delphi2.exe : 21.5KB(22,016バイト)
Delphi3.exe : 25.5KB(26,112バイト)
Delphi4.exe : 26.0KB(26,624バイト)
Delphi5.exe : 26.5KB(27,136バイト)
Delphi6.exe : 24.0KB(24,576バイト)
Delphi7.exe : 25.0KB(25,600バイト)

Delphi2.exe : VCLと同じくファイルサイズが1番小さくなった。
Delphi5.exe : ファイルサイズが1番大きくなったが5KBの差でしかなかった。
(VCLではDelphi2.exeとDelphi6.exeで219.5KBもの差があった)
Delphi6.exe : VCLでは起動が不可能だったIE4以下の古いWindowsでも動作した。
0867デフォルトの名無しさんNGNG
>>866
お疲れ様。
KOLで作るとタスクバーの右クリックメニューがまともになるのが良いね。
(元のサイズに戻す、移動、サイズ変更、最大化、最小化、閉じる)
VCLで作ると[元のサイズに戻す、最小化、閉じる]だけになっちゃうから
いかにもDelphiで作りましたって感じでなんだか嫌だ。
Delphi3とDelphi4の最小化アニメーションが標準で可能になるのも良いよ。
Delphi2のいんちき最小化アニメーションは綺麗になるのかな?
0868デフォルトの名無しさんNGNG
>>866
乙。
>>867
なる。
0869デフォルトの名無しさんNGNG
Delphi8のアイコンはカコイー
0870デフォルトの名無しさんNGNG
KOL使うとマジで10分の1位になるんだね。こんな手間掛けてネタじゃないよね?
実行時パッケージみたいにランタイムとかが要ったりするなんてオチはないよね?
0871デフォルトの名無しさんNGNG
>>870
使いやすさを犠牲にしてサイズを小さくしている感じ。
そこそこ使い勝手も欲しかったらHalbow氏のライブラリをつかうのもよいと思う。

>>828
KOLのSystem units replacementを使ってコンパイルするともう少しファイルサイズが小さくなると思う。
0872デフォルトの名無しさんNGNG
System units replacement 1.4使ったら逆に0.5KB大きくなったのですが・・・
俺の和訳がおかしいのかなあ?インストールし直してまた失敗すると辛いなあ。
D6PROでKOL1.90なのですがどなたか易しく教えて頂けませんでしょうか。
0873↑NGNG
↑
もっかいやったら出来ました。すみません。
教えて貰う程の事でもありませんでした。ただ寝ぼけてただけでした。
828さんと全く同じ設定でSystem units replacementを使用して作成。
Delphi6.exe : 16.5KB(16,896バイト)
0874828NGNG
>>871
System units replacementって不要になった時に元に戻すのが面倒だよね。
Halbow氏のライブラリよりKOLのが使い勝手が良いと思うのは俺だけかな?

Delphi4〜Delphi7(KOL+System units replacement)で作成した実行ファイル

*最新のアップデート(2004年7月現在)を適用済みの状態で作成
*KOL v1.90 21-Jan-2004/MCK v1.90 21-Jan-2004で作成
*下記のプロパティで統一(他のプロパティは初期状態の設定)

[TKOLProject]
dprResource : True

[TKOLForm]
Caption : Delphi*(*はDelphiのバージョンの半角数字1文字)
Left : 0
Top : 0
Width : 320
Height : 240
CenterOnScreen : True
StayOnTop : True

Delphi4.exe : 15.5KB(15,872バイト) [Ver.1.1]
Delphi5.exe : 16.0KB(16,384バイト) [Ver.1.1]
Delphi6.exe : 16.5KB(16,896バイト) [Ver.1.4]
Delphi7.exe : 16.0KB(16,384バイト) [Beta Ver.2]

*[Ver.〜]はSystem units replacementのVersionです。
0875デフォルトの名無しさんNGNG
乙。俺もKOLのが好きだよ。慣れればVCLと変わらない。は言い過ぎだが。
System units replacementはシステムに組み込むと外すのが面倒だから
適当な別の場所に置いといてライブラリパスを切り替えて使ったほうが良いですよ。
0876デフォルトの名無しさんNGNG
>>874
乙彼。UPXの比較も是非やって下さい。
System units replacementは元々小さい実行ファイルで比較すると
数KB位しか差が出ない事が多いけど100KB以上の実行ファイルで比較すると
Delphi4+System units replacementで作ったファイルは格段に小さくなりますね。
uses節がWindowsとKOLだけの場合でもDelphi2+KOLよりも
Delphi4+KOL+System units replacementのが小さい事が多いですね。
0877デフォルトの名無しさんNGNG
UPXは最早Delphi関係ないだろ
0878デフォルトの名無しさんNGNG
小さな実行ファイルを作る手段の1つとして使うのはいいんじゃん?
ただ普通に作ってUPX使うだけじゃDelphiとは関係ないかも知れんが。
各バージョンのDelphiで作った小さな実行ファイルが
UPXで圧縮するとさらにどれ位小さくなるのか俺は興味があるな。
全く関係ないけどUPXのVersion 1.25が知らん間に出てた。6月か。
0879デフォルトの名無しさんNGNG
ShowMeassage('こんちは');
0880デフォルトの名無しさんNGNG
それってソースが短けえだけじゃん!ネタニマジレスカコイー!
0881デフォルトの名無しさんNGNG
ShowMeassage('Hello');
0882デフォルトの名無しさんNGNG
綴りまちがってるし >>ShowMeassage
0883デフォルトの名無しさんNGNG
ShowMassage('Halo');
0884デフォルトの名無しさんNGNG
delphiってVCのリリースモードみたいのないの?
0885デフォルトの名無しさんNGNG
>>884
出力先やビルドオプションをDebug/Releaseで分けることはできない。
オプションに関してはインクルードファイル中で{$IFDEF RELEASE}{$R-}{$ENDIF}とかやるしかない。
某はプロジェクト管理機能に関してはまるでやる気なし。
0886デフォルトの名無しさんNGNG
デバッグモードからリリースモードに切り替えてバグが出るよりは幾分かマシ
0887デフォルトの名無しさんNGNG
お前はデバッグ中とリリース時で全くオプション変えないのか?
0888デフォルトの名無しさんNGNG
886じゃないけど、俺は変えないなあ。
面倒だし、今のところ不都合ないし。
0889デフォルトの名無しさんNGNG
>>887
じゃ、ユーザーが使うリリース版は、開発者はデバッグしないのか?
出荷バイナリと開発バイナリが異なっているとしたら、何をテストしているのだ?
0890888NGNG
Delphiは最適化に左右されるバグはでないらしいよ。
Delphiスレのどこかで断言された。

俺は最適化されるとデバッグが面倒だからOFFのままだけど。
0891デフォルトの名無しさんNGNG
>>889
質問に答えてないな
いったいどんなビルドオプションでリリースしてるんだ?
0892デフォルトの名無しさんNGNG
>>891
国語力0
0893デフォルトの名無しさんNGNG
>>891
VS C++ での話だが、開発初期は最適化オフ。テストが始まるころに最適化を有効にし、
ベータテストが始まったら最終的な出荷用フラグで開発。
そうしなきゃバグ取れないでしょ。

Delphi/PASCAL 系ではコンパイル時に強めに型チェックできるので、バイナリができる。
ということはロジックバグ以外のケアレスミスはほとんど残っていない。

ロジックミス(比較の符号を間違えるとか)はビルドオプションなどでは見つけられないバグ
だからどうしようもない。

昔の VB のような実行時にならないとチェックしようのない言語処理系とは
C/C++/C#/Delphi は本質的に異なるわけ。

インタプリタにも利点はあるので否定はしないよ。ただそういった点が開発スタイルにも
影響が出る。というのは事実だ。

VS だって C++/W32 はいまだに大量のコンパイルオプションをしょっているが
C# なんか本質的なスイッチは4つくらいじゃないか?
ディレクトリが変わる以外にデバッグとリリースとでどれだけのオプションが代わっているのか
考えてごらん。
0894デフォルトの名無しさんNGNG
デバッグ・リリースで変わるのはコンパイルオプションだけじゃないだろ。
これを簡単に切り替えられないDelphiのIDEは糞だけど代案があるから致命的な問題ではない。
Delphiに存在しない機能を必死に否定するのはアホのやることだよ。

なんにしてもスレ違いだな。
0895デフォルトの名無しさんNGNG
TForm1Button1Click
begin
Label1.caption:=Hellow,World!
end:
0896デフォルトの名無しさんNGNG
Delphiにない機能なんてないよ
ないのは未来だけ
0897デフォルトの名無しさんNGNG
>>895
つっこみどころが多すぎてわからない
0898デフォルトの名無しさんNGNG
まあ、IDE上ではデバッグ用のオプションで開発してリリース用にはmakefileを書いておくとか、
.dprをふたつ作ってプロジェクトグループで管理とか、代案は無い訳では無いが

スレ違いには間違い無いな
0899828NGNG
>>829
>>876
>>878
こんな感じで宜しいですかね?

Delphi2〜Delphi7(KOL)で作成してUPXで圧縮した実行ファイル

*UPX Version 1.25で圧縮率をMAXにして圧縮
*UPX 日本語 frontend ver.0.4.5の標準設定で圧縮

[KOL&UPXのファイルサイズ / KOLのファイルサイズ / VCLのファイルサイズ]
(KOLのみを使用して作成した場合)

Delphi2.exe : 13.5KB(13,824バイト) / 21.5KB(22,016バイト) / 154KB(158,208バイト)
Delphi3.exe : 15.5KB(15,872バイト) / 25.5KB(26,112バイト) / 174KB(178,688バイト)
Delphi4.exe : 15.5KB(15,872バイト) / 26.0KB(26,624バイト) / 274KB(281,088バイト)
Delphi5.exe : 15.5KB(15,872バイト) / 26.5KB(27,136バイト) / 285KB(291,840バイト)
Delphi6.exe : 14.5KB(14,848バイト) / 24.0KB(24,576バイト) / 374KB(382,976バイト)
Delphi7.exe : 15.0KB(15,360バイト) / 25.0KB(25,600バイト) / 359KB(367,616バイト)

[KOL&UPXのファイルサイズ / KOLのファイルサイズ / VCLのファイルサイズ]
(KOL+System units replacementを使用して作成した場合)

Delphi4.exe : 10.0KB(10,240バイト) / 15.5KB(15,872バイト) / 274KB(281,088バイト)
Delphi5.exe : 10.0KB(10,240バイト) / 16.0KB(16,384バイト) / 285KB(291,840バイト)
Delphi6.exe : 10.5KB(10,752バイト) / 16.5KB(16,896バイト) / 374KB(382,976バイト)
Delphi7.exe : 10.5KB(10,752バイト) / 16.0KB(16,384バイト) / 359KB(367,616バイト)
0900デフォルトの名無しさんNGNG
10KBちょっとで作成できる程度の内容の実行ファイルが
Delphi6のVCLで普通に作成すると374KBもの大きさになってしまうって事は
いかにVCLで作成された実行ファイルに無駄が多いって事ですよね。
生産性の高さやランタイムが不要な点を重視してDelphiを使用している方々にとっては
ファイルサイズなんかどうでも良いって感じでしょうけど。
まあそれが普通でこだわるのはマニアとかフリーソフト作者とかだけだと思いますが。
でも俺は同じ機能と性能で他よりも小さい実行ファイルはカコイーと思う。
0901デフォルトの名無しさんNGNG
生産性を犠牲にしてまで小さくしたいとは思わないなぁ。
KOLは充分使いやすいけど。
0902デフォルトの名無しさんNGNG
まぁ自己満足と開発効率のどっちを取るかっつったら
0903デフォルトの名無しさんNGNG
自己満足
0904デフォルトの名無しさんNGNG
KOLすげぇ
0905デフォルトの名無しさんNGNG
900KB位のスクリーンセーバーをDelphi4+KOL+System units replacementに移植したら
80KB位になりました。Delphi6+KOL+System units replacementでも120KB位になりました。
SysUtilsとRegistryをKOLで代用するのにヘルプがないのでかなり手間取りましたが
慣れてしまえばVCLとさほど変わらないので何でもKOLで作れそうです。
最大の問題はDelphiの未来かな・・・
0906デフォルトの名無しさんNGNG
レジストリを変更してソフトを起動する実行ファイルをKOLに移植してみた。
(体験版のクラックアプリとかではありませんよ。念の為)
usesはWindowsとKOLのみでなんとかなりました。
VC++で24KBだったものがDelphi6+KOLで17KBになりました。
Delphi2+KOLでは10KBになりました。
Delphi4+KOL+System units replacementでは8KBになりました。
(大小アイコンとバージョン情報等のリソース込みのサイズです)
もっと早く使っておけば良かったよ。Delphiが旬のうちに。
0907デフォルトの名無しさんNGNG
KOLってなんぞや?
0908デフォルトの名無しさんNGNG
>>907
今から説明するとスレッドが終わってしまうよ。
次スレかKOLスレを立てておくれや。
そんな事してたら質問が不要な位に分かるかも。
0909デフォルトの名無しさんNGNG
KOLって安定してるの?
0910デフォルトの名無しさんNGNG
元々はDelphi(Object Pascal)だからコンパイラは同じだし
安定している物を作れば安定するし安定しない物を作れば安定しない。
しっかり作るかいいかげんに作るかは言語を問わず本人次第。
Windowsって安定してるの?って言われたら安定してないとしか答えられないが。
0911デフォルトの名無しさんNGNG
KOL v1.92デマスタ。ageナイケドネ。
0912デフォルトの名無しさんNGNG
KOLってKOL対応コンポしか使えなくなる?
0913デフォルトの名無しさんNGNG
うーむ、このスレって、道具を研いで切れ味を高めてそのついでに小さな実行ファイル
を作るのが趣旨だったような。この意味では、UPX は論外だろなー。KOL を使用する
ことが「道具を研ぐ」ことになるのかな?
0914デフォルトの名無しさんNGNG
物にもよるが標準のコンポーネントは基本的に使えない。
System units replacementを使用しなければusesにSysUtilsとかを
追加する事は可能。まだ未開拓だからはっきりした事は何とも言えないよ。
面白いからとりあえず色々やってみれ。
0915デフォルトの名無しさんNGNG
俺は道具を研いで切れ味を高めたつもりでKOLに負けた事があるよ。
最初から切れる道具は有効に活用した方が良いと思うな。
勿論さらに研ぐ事も大事だと思うがそんな時代じゃなくなってきたかも。
UPXは論外だけどDelphiとは相性が良いって聞いたことがあるが
何と相性が悪いんだろうか?マイナーな日本語開発環境とかかな?
0916デフォルトの名無しさんNGNG
HSPとかじゃん。
0917デフォルトの名無しさんNGNG
Delphi7(Pro)を3枚持ってるんだけど誰かDelphi2かDelphi4と交換して下さい。
最初の1枚目はオークションで1万円位で買いました。
2枚目は期間限定パッケージで3万円位で買ってユーザー登録をしました。
3枚目はDelphi8(Pro)をアップグレード価格(2万円)で買ったら付いてきました。
結局6万円位でDelphi7(Pro)を3枚とDelphi8(Pro)を1枚買ってしまいました。
オークションで売るのも面倒だしな・・・ってスレ違いだった。
0918デフォルトの名無しさんNGNG
漏れにとっちゃexeのファイルサイズより実行時メモリ使用量のほうが大事
メモリ食う量減るならKOL使ってみようと思うんだけど、そこんとこどうなの?
教えてエロイ人
0919デフォルトの名無しさんNGNG
>>918
828さんと同じ条件の実行ファイルをDelphi7とDelphi7+KOLで比較したら
メモリ使用量はDelphi7が4056KBでDelphi7+KOLが3008KBだった。
ちなみにDelphi7+KOL+System units replacementでは2996KBだった。
Pen4の3.06GHzとDDR333の1GBでWin2Kを使って測定した結果だから
環境によっては多少異なると思う。
最近はメモリ512MBが標準になってきてるからこれ位の差じゃ使う意味ないかな?
0920デフォルトの名無しさんNGNG
C#Builderにはデバッグリリースビルドが実装されてるな。
上のほうでイラネとかいってた奴絶対使うなよw
0921デフォルトの名無しさんNGNG
sageない香具師はシカト。
0922デフォルトの名無しさんNGNG
>>919
100個起動したら十分差が付くから意味あるよ
0923デフォルトの名無しさんNGNG
>>922
100個起動する必要があるアプリに意味が無いので意味が無い。
0924デフォルトの名無しさんNGNG
常時起動ではなくても
HDDの数百KBよりはメモリの1MBのほうが重要だと思うよ
0925デフォルトの名無しさんNGNG
漏れは何を言ってるんだorz
たったの12KBじゃないかorz
0926デフォルトの名無しさんNGNG
>>922
勘違い野郎
>>924
恥の上塗り
0927デフォルトの名無しさんNGNG
Apacheなんかは100個起動されたりするしね
0928デフォルトの名無しさんNGNG
>>925
VCLとKOLの差は12KBじゃなくて1048KBあるじゃん。
>>919をちゃんと見れよ。
0929デフォルトの名無しさんNGNG
100個は無理だから10個ずつ起動して比較してみたけど
メモリ使用量で10MBの差が出たよ。
もっと大きい実行ファイルで比較したらどうなるんだろう?
0930デフォルトの名無しさんNGNG
価値判断はどうでもいい
データだけで十分
0931デフォルトの名無しさんNGNG
差が縮まった
0932デフォルトの名無しさんNGNG
複数起動したらコード部分は共通にならないの?
0933デフォルトの名無しさんNGNG
NT系はならないよ
0934デフォルトの名無しさんNGNG
なるだろ
メモリマップされてんだから
0935デフォルトの名無しさんNGNG
DLLのコード部分はなるけどexeはならないよ
0936デフォルトの名無しさんNGNG
>>935
dllとexeとファイルマッピングオブジェクトの関係を知らんのか?
exeは実行するたびにプロセスごとに独立したメモリにロードされるとでも?
0937デフォルトの名無しさんNGNG
既存のメモリ上のを別の場所にコピーしてからマッピングするんだよ
0938デフォルトの名無しさんNGNG
コードセグメントのSHARED(shareable?)フラグとかは関係ないの?
0939デフォルトの名無しさんNGNG
何か変なデマ振りまいてる奴がいるが
exeのコード部はデフォルトで共有されるぞ
0940デフォルトの名無しさんNGNG
双方ともソース出せ
0941デフォルトの名無しさんNGNG
http://www.microsoft.com/msj/1199/hood/hood1199.aspx
> Prime examples of shared memory are code pages and read-only data sections.
> Because these pages of memory don't change, the operating system can use the
> CPU hardware to map the physical pages of RAM into multiple ad-dress spaces.
0942デフォルトの名無しさんNGNG
コード部分はバッファオーバーフローによる
メモリ書き換えが出来る事からも分かるように、
書き換え可能だよ。だからコピーされるんだよ。
0943デフォルトの名無しさんNGNG
それはスタック領域
0944デフォルトの名無しさんNGNG
942=Copy on writeも知らない大馬鹿
0945デフォルトの名無しさんNGNG
944=自分の知っていることは全て常識,知らないやつは大馬鹿
0946デフォルトの名無しさんNGNG
945=942
0947デフォルトの名無しさんNGNG
944=946
0948デフォルトの名無しさんNGNG
exeのコードセクションが共有されるかどうかという話をしてるのに
知らないのはヤバいだろ
0949デフォルトの名無しさんNGNG
みんな知ってるならそもそもexeのコードセクションが共有されるかどうかという話を
する必要がないだろ
0950デフォルトの名無しさんNGNG
お前らexeサイズ肥大化させてやるからこのスレ空けろと
0951デフォルトの名無しさんNGNG
残念、ちょっと前までは閑古鳥が鳴いてたのに。
0952デフォルトの名無しさんNGNG
>>950
お前が950取ったから次スレ立てろと
0953デフォルトの名無しさんNGNG
次はKOLスレでどうぞ。やっぱ、このスレの趣旨とKOL使うのは、なんか違うような気がするです
0954デフォルトの名無しさんNGNG
俺もKOLとこのスレの趣向は微妙に違うと思う。
でもKOLスレとこのスレの次スレに分かれたらKOLスレのが人気が出そう。
っていうか両方ともスレが立たないに100万ペソ。
Delphiには未来が無いよな。でもDelphi9にちょっと期待している俺。
0955デフォルトの名無しさんNGNG
いちいち分割する必要はないだろう
ここはDelphi板じゃないんだ
0956デフォルトの名無しさんNGNG
wxWindowsもSWTもスレあるしな…
Delphiスレが増えるのが嫌なら比較スレとか雑談スレのひとつぐらい減らしても…

…と思ったが被害担当艦が無くなると質問スレが荒らされるしなあ
0957デフォルトの名無しさんNGNG
ネタも尽きたので終了ってことで
0958デフォルトの名無しさんNGNG
初心者向けに基本設定でこれだけはやっとけっていう
まとめを頼む。

ネタ
フォームアプリだけで数100食うのを設定でなんとか減らしなさい。
0959デフォルトの名無しさんNGNG
実行時パッケージクマー
0960デフォルトの名無しさんNGNG
>ネタも尽きたので終了ってことで

そうだね。なんだか、今の道具を磨くのも虚しくなってきた。2年後は無意味になりそうで。
0961デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1089454618/
0962デフォルトの名無しさんNGNG
>2年後は無意味になりそうで。
Longhorn は何年後に延期になったんだっけ
0963デフォルトの名無しさんNGNG
828さんまだ居ますか?
Halbow氏のGeneric01.dprを各バージョンのDelphiで比較して下さい。
ってもう居ないかな?
0964デフォルトの名無しさんNGNG
>>963
比較乙
0965デフォルトの名無しさんNGNG
俺に乙って言われても困るのだが・・・
Delphi5が17408バイトでDelphi6が9216バイトだった。
後は持ってないのと動かせる環境がないから俺には無理。
0966デフォルトの名無しさんNGNG
>>965
あそこには

> Delphi3.1 で 15.872キロバイト、Delphi2.0 では 10.240キロバイトであった。

って書いてあるから、あと4と7だけかな。
0967デフォルトの名無しさんNGNG
>>965-966
7は持ってるので試してもいいが、そのgeneric01.dprってどこにあるの?
0968デフォルトの名無しさんNGNG
Del7 15,360
0969デフォルトの名無しさんNGNG
D6 が特に小さいのは System.pas に大きな変更でもあるのかな
0970デフォルトの名無しさんNGNG
Delphi2最新アップデート適用後は8704バイト。
Delphi7最新アップデート適用後は16384バイト。
D5とD6は>>965が最新アップデート適用後と一緒だった。
D3とD4は持ってねえ。
0971828NGNG
>>963
今さらですけどこんな感じでした。
全て最新アップデート適用済みのProfessional(Developer)版です。

Halbow氏のGeneric01.dprをDelphi2〜Delphi7でコンパイルした実行ファイル

[通常の方法でコンパイル]
Delphi2.exe : 8.50KB(8,704バイト)
Delphi3.exe : 15.5KB(15,872バイト)
Delphi4.exe : 16.0KB(16,384バイト)
Delphi5.exe : 17.0KB(17,408バイト)
Delphi6.exe : 9.00KB(9,216バイト)
Delphi7.exe : 16.0KB(16,384バイト)

[System units replacementを使用]
Delphi4.exe : 5.50KB(5,632バイト)
Delphi5.exe : 5.50KB(5,632バイト)
Delphi6.exe : 6.50KB(6,656バイト)
Delphi7.exe : 7.00KB(7,168バイト)
0972デフォルトの名無しさんNGNG
ほう。なるほどねえ。
スレの最後に面白い物が見られて良かったよ。
0973デフォルトの名無しさんNGNG
同じソースをコンパイルした同じ動作で同じ機能の実行ファイルなのに
Delphiのバージョンでファイルサイズが変わるのが納得いかないよ。
Delphi2〜7の全部が使用可能な環境を今からわざわざ用意するのも大変だし
1台のマシンに2種類以上のDelphiを入れると不具合が出そうだし
みんなどうやってるんだ?VPCとかVMwareとか使ってるのか?
0974デフォルトの名無しさんNGNG
>1台のマシンに2種類以上のDelphiを入れると不具合が出そうだし
 D3.1とD4
 D4とD5
 D5とD6
 D6とD7
という組み合わせで同居させたことがあるけど問題なかった。
同時にBCBも2種類入れてたりしたし。
0975デフォルトの名無しさんNGNG
5,6 / 6,7,8 の同居はやったけどまるで問題なし
一応install.txtにはBDEのバージョンに気をつけろみたいなことは書いてあった気がする
0976デフォルトの名無しさんNGNG
ここにいるようなoldtypeはBDEなんてつかわんだろうしな。
0977デフォルトの名無しさんNGNG
BDEはインストーラ要るしね
どうせ使うならFirebird embeddedの方がイイ
0978デフォルトの名無しさんNGNG
スレさようなら
0979デフォルトの名無しさんNGNG
979
0980デフォルトの名無しさんNGNG
このスレ、2年8ヶ月ももったのか。
あまり役に立たなかったけど、なんか雰囲気がすきだったな
0981デフォルトの名無しさんNGNG
落ち
レス数が950を超えています。1000を超えると書き込みができなくなります。