kkuzil.own@gmail.com

Posted
Filed under 주절주절

맨 처음 나치 정부는 공산주의자들을 잡아갔다.
나는 침묵했다. 나는 공산주의자가 아니었으므로,

그 다음, 정부는 사회 민주주의자를 잡아갔다.
그때 나는 침묵했다. 나는 사회 민주주의자가 아니었으므로,

그 다음, 정부는 노동조합원을 잡아갔다.
그때 나는 침묵했다. 나는 노동조합원이 아니었으므로,

그리고 정부는 유태인들을 잡아갔다.
그때 나는 침묵했다. 나는 유태인이 아니었으므로,

마침내 정부는 나에게 찿아왔다.
하지만 나를 위해 항변해줄 사람이 아무도 남지 않았다

-마르틴 니묄러-

2011/07/11 14:14 2011/07/11 14:14
Posted
Filed under Development/Delphi
EAbort
메시지 상자를 출력하지 않고 현재의 코드 블록을 취소할때 발생


EOutOfMemory
애플리케이션을 실행하기 위한 메모리 부족시 발생


EAccessViolation
메모리가 할당되지 않은 상황에서 연산을 하거나
메모리 할당 후 해제하지 않고 다시 할당할때 발생


EstackOverflow
현재의 스레드 수행이 더이상 메모리에 할당될 수 없을 경우


ElnOutError
파일 입출력시에 에러가 나는 경우


ElntError
정수 연산시 발생하는 에러


EDeivByZero
정수를 0으로 나누었을 때 발생


ERangeError
정수형의 범위를 벗어나는 값이 할당 됐을 경우


ElnvalidPointer
부적절한 포인터 연산이 수행됐을 경우


ElnvalidCast
as연산자를 이용하여 부적절한 형변환이 발생했을 경우


EConvertError
strtoint 나 inttostr등의 형변환 함수 에러


EControlC
콘솔모드 애플리케이션의 경우에서 발생
ctrl+c가 눌렀을때 발생한다.


EPropReadOnly
OLE 오토매이션이 수행되는 동안 읽기 전용 프로퍼티에 쓰기할 경우 발생


EPropWriteOnly
OLE 오토메이션이 수행되는 동안 쓰기 전용 프로퍼티에 읽기를 할경우 발생


EExternalException
그외 어떠한 코드에도 적용되지 않는 경우 나타나는 에러들


EStreamError
LoadFromStream으로 stream을 읽을때 발생


EFCreateError
파일이 생성될때 예외 상황


EFOpenError 파일이 열리지 않을때 발생


EResNotFound
ReadConponentRes메소드가 리소스파일에서 특정한 리소스를 발견하지 못했을때 발생


EListError
리스트 문자열 문자열 리스트에서 발생 리스트의 범위를 벗어났을 경우


EStringListError
문자열 리스트 지정 범위를 초과했을때 발생


EMathError
실수 연산시 발생하는 예외 상황


ElnvalidOp
실수 연산시 정의되지 않은 다양한 예외 상황이 발생하였을때


EZeroDivide
실수를 0으로 나누었을 때 발생하는 예외 상황


EOverflow
실수연산으로 레지스터에 할당된 값보다 큰값이 할당되었을때


EUnderflow
실수연산으로 실수로 나타내기에 너무 작은값이 할당되었을 때


EPrinter
프린터 인쇄시 발생하는 예외 상황


EMenuError
애플리케이션에서 사용하는 메뉴에서 애러가 발생했을때 나타난다


ElnvalidOperation
비윈도우 컴포넌트가 윈도우 핸들을 필요로 하는 연산을 수행했을때 발생


ElnvalidGraphic
부적절한 그래픽 파일을 로드했을때 발생


ElnvalidGraphicOperation
그래픽상에서 부적절한 연산이 수행될때 발생하는 예외 상황

출처 : 델마당[slypuma님 글]
2010/11/03 10:58 2010/11/03 10:58
Posted
Filed under Development/Delphi

언젠가는 쓸데가 있겠지... 훗

interface
...
...
const
  STATUS_SUCCESS                = $00000000;
  {$EXTERNALSYM STATUS_SUCCESS}

type
  NT_STATUS = LongInt;

  IO_STATUS_BLOCK = record
    case integer of
      0:
       (Status: NT_STATUS);
      1:
       (Pointer: Pointer;
        Information: ULONG); // 'Information' does not belong to the union!
  end;
  PIO_STATUS_BLOCK = ^IO_STATUS_BLOCK;

  _FILE_INTERNAL_INFORMATION = record // Information Class 6
    FileId: LARGE_INTEGER;
  end;
  FILE_INTERNAL_INFORMATION = _FILE_INTERNAL_INFORMATION;
  PFILE_INTERNAL_INFORMATION = ^FILE_INTERNAL_INFORMATION;

  _FILE_NAME_INFORMATION = record
    dwLen: DWORD;
    sFileName: array [0..0] of WideChar;
  end;
  FILE_NAME_INFORMATION = _FILE_NAME_INFORMATION;
  PFILE_NAME_INFORMATION = ^FILE_NAME_INFORMATION;

_FILE_INFORMATION_CLASS = (
    FileFiller0,
    FileDirectoryInformation,     // 1
    FileFullDirectoryInformation, // 2
    FileBothDirectoryInformation, // 3
    FileBasicInformation,         // 4  wdm
    FileStandardInformation,      // 5  wdm
    FileInternalInformation,      // 6
    FileEaInformation,            // 7
    FileAccessInformation,        // 8
    FileNameInformation,          // 9
    FileRenameInformation,        // 10
    FileLinkInformation,          // 11
    FileNamesInformation,         // 12
    FileDispositionInformation,   // 13
    FilePositionInformation,      // 14 wdm
    FileFullEaInformation,        // 15
    FileModeInformation,          // 16
    FileAlignmentInformation,     // 17
    FileAllInformation,           // 18
    FileAllocationInformation,    // 19
    FileEndOfFileInformation,     // 20 wdm
    FileAlternateNameInformation, // 21
    FileStreamInformation,        // 22
    FilePipeInformation,          // 23
    FilePipeLocalInformation,     // 24
    FilePipeRemoteInformation,    // 25
    FileMailslotQueryInformation, // 26
    FileMailslotSetInformation,   // 27
    FileCompressionInformation,   // 28
    FileObjectIdInformation,      // 29
    FileCompletionInformation,    // 30
    FileMoveClusterInformation,   // 31
    FileQuotaInformation,         // 32
    FileReparsePointInformation,  // 33
    FileNetworkOpenInformation,   // 34
    FileAttributeTagInformation,  // 35
    FileTrackingInformation,      // 36
    FileMaximumInformation);
  FILE_INFORMATION_CLASS = _FILE_INFORMATION_CLASS;
  PFILE_INFORMATION_CLASS = ^FILE_INFORMATION_CLASS;

..
..
..

implementation

..
..

procedure TDlgScanMain.sButton2Click(Sender: TObject);
var
  NtQueryInformationFile: function(FileHandle:DWORD;
                                   IoStatusBlock: PIO_STATUS_BLOCK;
                                   FileInformation: Pointer;//PFILE_INTERNAL_INFORMATION;
                                   Length:DWORD;
                                   FileInformationClass:FILE_INFORMATION_CLASS):DWORD; stdcall;
  FileName: string;
  hFile: THandle;
  io: IO_STATUS_BLOCK;
  FileInfo: FILE_INTERNAL_INFORMATION;
  Res: NT_STATUS;
  FileRecInput: TNtfsFileRecordInputBuffer;
  FileRecOutput: PNtfsFileRecordOutputBuffer;
  Read: DWORD;
  hDevice: THandle;
  VolumeDataBuff: NTFS_VOLUME_DATA_BUFFER;
  Size: DWORD;
  rec: PFileRecordHeader;
  pName: PFILE_NAME_INFORMATION;
begin
  FileName:='E:\테스트\DOC';

  NtQueryInformationFile := GetProcAddress(GetModuleHandle('ntdll.dll'), 'NtQueryInformationFile');
  if Assigned(NtQueryInformationFile)=false then
    exit;

  if FileExists(FileName) then
    hFile := CreateFile(PChar(FileName),
                        GENERIC_READ or
                        GENERIC_WRITE,
                        FILE_SHARE_READ or
                        FILE_SHARE_WRITE or
                        FILE_SHARE_DELETE,
                        nil, OPEN_EXISTING, 0, 0)
  else if DirectoryExists(FileName) then
    hFile := CreateFile(PChar(FileName),
                        GENERIC_READ or
                        GENERIC_WRITE,
                        FILE_SHARE_READ or
                        FILE_SHARE_WRITE or
                        FILE_SHARE_DELETE,
                        nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
  else ASSERT(false);

  if hFile <> INVALID_HANDLE_VALUE then
  begin
    ZeroMemory(@FileInfo, sizeof(FileInfo));
    Res := NtQueryInformationFile(hFile, @io, @FileInfo, sizeof(FileInfo), FileInternalInformation);

    if Res <> STATUS_SUCCESS then Exit;
    hDevice := CreateFile(PChar('\\.\'+FileName[1]+':'), GENERIC_READ or GENERIC_WRITE,
                        FILE_SHARE_READ or
                        FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);

    if not(DeviceIoControl(hDevice, FSCTL_GET_NTFS_VOLUME_DATA, nil, 0,
       @VolumeDataBuff, sizeof(VolumeDataBuff), Read, nil))
          then RaiseLastWin32Error();

    Size := sizeof(TNtfsFileRecordOutputBuffer) + VolumeDataBuff.BytesPerFileRecordSegment-1;
    GetMem(FileRecOutput, Size);
    ZeroMemory(FileRecOutput, Size);

    ZeroMemory(@FileRecInput, sizeof(FileRecInput));
    FileRecInput.FileReferenceNumber:=FileInfo.FileId;

    if not(DeviceIoControl(hFile,
                    FSCTL_GET_NTFS_FILE_RECORD,
                    @FileRecInput,
                    sizeof(FileRecInput),
                    FileRecOutput,
                    Size,
                    Read,
                    nil)) then
    begin
      RaiseLastWin32Error();
    end;

    rec := @FileRecOutput.FileRecordBuffer;
    sMemo1.Lines.Add(IntToStr(rec.SequenceNumber));

    FreeMem(FileRecOutput);
    CloseHandle(hDevice);
  end else
    RaiseLastWin32Error();
end;

2010/07/29 15:56 2010/07/29 15:56
Posted
Filed under Development/C++

프로그램 시작부터 안보이게 하고싶을 경우 WinMain안에서~


ShowWindow(Application->Handle, SW_HIDE);
Application->ShowMainForm = False;


요렇게~


VC에서는 이렇게 하면 안되지.. 아마..

내공이 부족해서 왜 안되는지는 모르겠고.. 폼 위치를 바꿔버려야 한다..안보이게 슝~

함수명이 머드라... SetPosition어쩌군데.. 기억이.. 암튼 여기까지

2010/07/22 15:59 2010/07/22 15:59
Posted
Filed under Development/C++

볼랜드 포럼에서 업어온것임~

==========================

임펠리테리입니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_LAYERED);
    SetLayeredWindowAttributes(Handle, 0, (255 * 70) / 100, LWA_ALPHA);
}
간단하죠?
참고자료는...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/layerwin.asp

그럼 이만...

===========================

여기까지는 코드단에서 해줄수 있는것이고~ (VC에서는 기본적으로 이렇게 처리를 해주구..)
폼 속성을 이용하면 더욱 간단하다~

FORM Inspector에서
속성중 AlphaBlend의 속성을 True로 변경후
AlphaBlendValue의 값을 0~255 값사이로 투명도를 지정해 주면된다..
역시 빌더가 쵝오야 -ㅁ-)bㅋ

CBuilder 6.0 이하는 확인 못해봤음..

2010/07/22 15:59 2010/07/22 15:59