お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE:クリップボードにテキストファイルをコ"

この発言は
#01101 わいわい さんのクリップボードにテキストファイルをコピー
に対するコメントです

この発言に対し以下のコメントが寄せられています
#01108 わいわい さん Re^2: クリップボードにテキストファイルを

 わいわい さん、こんにちは。 こちらも APIのみで書いてみました。 program TextCopy; uses Windows; function SkipExeName(s: PChar): PChar; begin Result := s; if Result^ = '"' then begin repeat Inc(Result); until Result^ = '"'; Inc(Result); end else begin repeat if Result^ = #0 then Exit; Inc(Result); until Result^ = ' '; end; while Result^ = ' ' do Inc(Result); end; label 0, 1; var FileName: PChar; NextParam: PChar; FileHandle: THandle; FileSize: Integer; MemHandle: HGlobal; TextStr: PChar; NumberOfBytesToRead: Integer; begin FileName := SkipExeName(CmdLine); NextParam := SkipExeName(FileName); if NextParam[-1] = ' ' then NextParam[-1] := #0; FileHandle := CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if FileHandle = INVALID_HANDLE_VALUE then Exit; FileSize := GetFileSize(FileHandle, nil); MemHandle := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, FileSize + 1); if MemHandle = 0 then goto 0; TextStr := GlobalLock(MemHandle); if TextStr = nil then goto 1; ReadFile(FileHandle, TextStr^, FileSize, NumberOfBytesToRead, nil); TextStr[NumberOfBytesToRead] := #0; GlobalUnlock(MemHandle); if not OpenClipboard(0) then goto 1; EmptyClipboard; SetClipboardData(CF_TEXT, MemHandle); CloseClipboard; goto 0; 1:GlobalFree(MemHandle); 0:CloseHandle(FileHandle); end. >でも、こんだけのプログラムでも、290Kにもなるんですね。 >   > Delphi5 上のもので Delhi2.0では 8.00KB、 アセンブリにしたもので TASMでは 4.50KBでした。 ぜえた (QZC05100) Original document by ぜえた 氏 ID:(QZC05100)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum