Q&A

  • [질문] 하드디스크 포맷방법
하드 디스크의 드라이브명, 파일시스템, 볼륨명등의
드라이브 리스트를 구했습니다.
이 리스트에서 선택한 하드 디스크를 포맷 하려고 합니다.

델파이 코드 (API 등)을 이용하여 직접 포맷이 되면 좋겠고,
윈도우에서 지원하는 포맷 프로그램을 띄우는 방법도 좋습니다.

단 드라이브명(A: C: D: 등), 파일시스템(FAT32/NTFS), 빠른 포맷 등의 값을 파라메터로 넘겼으면 합니다.

SHFormatDrive API는 플로피디스크만 되는것 같습니다.

두번째 질문입니다.
포맷할때나 포맷된 디스크에 대해 드라이브명을 바꿀수 있을까요?
예를 들면 D:\ 드라이브를 P:\드라이브로 이름을 바꾸는 방법입니다.

이상은 모두 코딩으로 해결하려고 합니다.
윈도우 제어판에서 하는것이 아닙니다.

감사합니다.
2  COMMENTS
  • Profile
    구창민 2008.10.17 21:46
    안녕하세요..

    SHFormatDrive API 는 시스템의 포맷 다이얼로그를 띄워 주는 것입니다..

    그러므로, 플로피만 포맷 되는것이 아니지요..

    아래 예제를 참고하셔서 즐거운 프로그래밍 하세요..


    const SHFMT_DRV_A = 0;
    const SHFMT_DRV_B = 1;
    const SHFMT_ID_DEFAULT = $FFFF;
    const SHFMT_OPT_QUICKFORMAT = 0;
    const SHFMT_OPT_FULLFORMAT = 1;
    const SHFMT_OPT_SYSONLY = 2;
    const SHFMT_ERROR = -1;
    const SHFMT_CANCEL = -2;
    const SHFMT_NOFORMAT = -3;

    function SHFormatDrive(hWnd : HWND;
    Drive : Word;
    fmtID : Word;
    Options : Word) : Longint
    stdcall; external 'Shell32.dll' name 'SHFormatDrive';

    procedure TForm1.Button1Click(Sender: TObject);
    var FmtRes : longint;
    begin
    try
    FmtRes:= ShFormatDrive(Handle,
    SHFMT_DRV_A,
    SHFMT_ID_DEFAULT,
    SHFMT_OPT_QUICKFORMAT);
    case FmtRes of
    SHFMT_ERROR : ShowMessage('Error formatting the drive');
    SHFMT_CANCEL : ShowMessage('User canceled formatting the
    drive');
    SHFMT_NOFORMAT : ShowMessage('No Format')
    else
    ShowMessage('Disk has been formatted');
    end;
    except

    end;
    end;

    그리고, 아래 사이트를 참고해 보세요..


    http://www.efg2.com/Lab/Library/Delphi/IO/DisksDrives.htm
  • Profile
    coderoad 2008.10.17 22:03
    감사합니다.
    유용하게 사용하겠습니다.
    • 이정욱
      2008.10.21 18:29
      잘 됩니다.. 일반적으로 띄우는 방법과 같습니다.
    • 야단났네~*
      2009.01.15 03:15
      NewForm.Show; 이렇게 하시면 Access 뭐시기 에러가 나올겁니다. 메모리에 Form이 Load되지 않아서 ...
    • 임채민
    • 2008.10.21 02:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.10.21 02:30
      무슨 말씀이신가요???
    • 석주현
      2008.10.21 02:49
      아마도 답을 쓰신다는게 답글로 안가고 그냥 올라왔나보네요. ㅠ_ㅠ
    • 석주현
      2008.10.21 03:01
      첫장만 나오게 하려면 아마도 <!--CodeS--> QuickRep1.PrinterSettings.FirstPage := 1; Qu...
    • 석주현
      2008.10.21 02:48
      밑에도 말씀드렸지만 저도 저 레코드 타입을 못찾아서 포기 하고 제가 알려드렸던 홈피에 있는걸로 깔...
    • 아르스
      2008.10.21 18:30
      후... 약 3일간의 삽질끝에 해결했습니다. 도움말에 보면 저런 문제가 발생할때는 패치가 실패했거...
    • 박찬호
    • 2008.10.20 19:49
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.20 20:21
      제어판의 국가및 언어 옵션을 영어나 다른 걸로 모두 다 바꾸면 아마 다시 리부팅 할겁니다. 그런 후...
    • 박찬호
      2008.10.20 22:22
      소나기님... 알려주신대로 작업을 했는데도 마찬가지로 나타납니다. 다른 프로그램 문제가 없는...
    • 홍성락
      2008.10.21 00:43
      대부분 OS언어가 다른 경우 나타납니다, 만약 한글OS에서라면 제어판의 국가및 언어 옵션의 3번째 탭의...
    • 석주현
      2008.10.21 02:46
      위에 말씀드린 국가 및 언어 옵션에 나와 있는 모든 것을 다 타 언어로 바꾼 후에 다시 바꾸시면 됩니다....
    • coderoad
    • 2008.10.20 08:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.10.20 10:39
      <!--CodeS--> function AlphabatToNumber(Alpha: Char): Integer; begin Result:=Integer...
    • coderoad
      2008.10.20 20:16
      앗. 이런 기발한 방법이... 정말로 고맙습니다.
    • 과학상자
      2008.10.20 21:04
      소나기님 정말 감사합니다... 저..실행파일로 만들어 주시면 안될까여 ;;;
    • 장성호
      2008.10.20 22:49
      ㅋㅋ 소나기님 배포를 해야할지도 모르니 setup.exe 파일도 미리 만들어 주세요
    • 장성호
      2008.10.21 21:58
      과학상자님 시스템 환경변수 수정및 적용이 SetEnvironmentVariable API로 잘안됩니다. 아래 팁을 ...
    • 석주현
      2008.10.22 00:34
      아래 보면 알지만 시샵님께서 한마디 하셔서 ㅡ_ㅡ;; 암튼 장성호님 팁 정말로 좋은거 같네요. 감사...
    • 석주현
    • 2008.10.21 02:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 과학상자
    • 2008.10.21 07:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 과학상자
      2008.10.21 08:01
      혼자 끙끙 거리며 왜안될까 하며 이것저것 만져 봐서 안되 가지고 다시글 올린 거에요... 아! 소나기 ...
    • 과학상자
      2008.10.21 10:34
      소나기님... 밑에 답글이여 ;;
    • 이정욱
      2008.10.21 18:32
      델파이 질답의 가장 중요한 점은 질문하신분께 조금의 정보와 기술을 알려드리는 것입니다.. 이런식의 프...
    • 석주현
      2008.10.21 20:37
      예 정욱님 죄송합니다. 다음 부터 유념하겠습니다.
    • 과학상자
      2008.10.22 08:09
      이정욱님 너무 하십니다!!!!!!! ㅠ.ㅠ 삐짐 -
    • 홍성락
      2008.10.20 23:44
      TFrame에도 create, destroy의 override가 가능합니다. 오류와 메모리 릭이 발생하였다면 재대로 죽지 ...
    • steps
      2008.10.20 23:51
      홍성락님 감사합니다. 메인폼의 close이벤트에서 프레임.free; 를 호출하니 버그가 없어집니다. 이런건...
    • 홍성락
      2008.10.21 00:28
      해당 유닛내의 로컬은 자동으로 해줍니다. 그리고 위와 같은경우에도 생성한 폼이 죽을때 같이 TFrame2글...
    • steps
      2008.10.21 03:51
      음 델파이가 좀더 친절하게 이런것까지 해줬으면 ... 성락님 답변 감사드립니다.
    • 석주현
      2008.10.19 00:06
      저도 예전에 그거 받아서 아무리 깔려고 해도 안돼서 원래 TBX 라이브러리쪽 개발한 싸이트에 가서 ...
    • 아르스
      2008.10.19 02:21
      우어~~ TBX 포기하고 SpTBXLib를 설치를 해봤는데... 역시나 에러 나네요 ㅡㅡ;;; 폼위에 SpT...
    • 아르스
      2008.10.19 03:13
      http://club.telepolis.com/silverpointdev/sptbxlib/ 여기에서 MultiInstaller.exe 를 받아서 실행...
    • 석주현
      2008.10.19 04:11
      거참 이상하네요. 전 델마당인가에서 받은거 패치고 뭐고 다해도 안돼서 위에꺼 받아서 한번에 잘되었...
    • 아르스
      2008.10.20 21:51
      컥!! 패치를 잘못해서 발생한 에러군요.. 생각보다 패치가 까다롭네요 ㅠㅠ 어쨋건 패치를 제대...
    • steps
    • 2008.10.18 04:30
    • 9 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.10.18 05:07
      일단 검사하시려면 FastMM를 사용해서 제거하세요. 보통 일반 배열은 setlength(la, 0)만 해도 메모리 ...
    • steps
      2008.10.19 02:11
      홍성락님 프로젝트파일의 uses절 제일 처음에 fastmm4를 추가하고 다시 컴파일한후에 검사해보았지만 ...
    • 홍성락
      2008.10.20 05:20
      fastmm4는 메모리릭을 찾아주는거지 없애주는건 아닙니다, 누적되거나 큰 릭이 발생하면 잡아줘야합니다,...
    • steps
      2008.10.20 21:29
      홍성락님 감사합니다. ocx테스트가 힘들어 exe로 만들어 보니 다음의 로그 파일이 생기는데요 이게 대체...
    • 홍성락
      2008.10.20 22:17
      TCriticalSection x 1... 이정도 작은 릭이면 잡을 필요도 없습니다, 특정 메모리에 누적도 없이 생기는...
    • steps
      2008.10.20 22:31
      이용한 서고들이 충돌하는가를 검사하려고 새 프로젝트에 빈 폼을 만들고 uses절을 복사한 후 하나씩 제...
    • 홍성락
      2008.10.20 22:38
      indy도 그럴겁니다, 저희도 메모리릭중 누적도 없는 xx - xx bytes: TCriticalSection x 1 이런건 잡을 ...
    • • • •
    • 최용일
      2008.10.18 03:53
      어쩌라구요? ForceDirectories('c:\myfolder');
    • 홍성락
      2008.10.18 05:00
      MkDir('c:\myfolder');도 있어요, 내용이 없어서 그냥 명련문만인지, 서브폴더 없이 그아래 폴더 생성...
    • 이정욱
      2008.10.18 05:23
      답변해 주신분들...너무 착하신듯....
    • 석주현
      2008.10.18 19:36
      ㅎㅎ 최근들어 최고의 질문이네요. ㅡ_ㅡ;;
    • 홍성락
      2008.10.18 05:17
      자세한건 잘모르겠는데요, 다른 어플하고 막무가내로 어떻게 해보라는 요구와 그 시스템 건들지 말라고 ...
    • 임정미
      2008.10.20 09:17
      제 질문에 항상 좋은 대답을 해 주셔서 감사합니다. 저도 기본적으로 다른 프로그램과 파일을 공유할땐 ...
    • 홍성락
      2008.10.20 22:01
      아! 곤란하시겠네요, 다른 어플 옵션으로 임시 생성하는 파일이라....그 어플이 저장시 계속 파일을 열고...
    • 이정욱
      2008.10.21 02:32
      전 날짜의 파일을 삭제 하는 프로그램을 하나 작성하시고, 그것을 윈도우 스케쥴러에서 하루에 한번씩 ...
    • 임정미
      2009.02.02 19:44
      RS232 사용해서 직접 받는 쪽으로 하고 있습니다. 관심 가져주셔서 감사합니다.
    • TOMATO
    • 2008.10.17 21:29
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.10.17 22:25
      안녕하세요.. 다른사람이 코딩을 해주면.. 어떤 의미가 있을까요..ㅎㅎ:: 아래 내용을 참고하셔서...
    • 장진환
      2008.10.20 23:35
      위 코드 참고하여 해결했어요 감사합니다 ^^
    • 최용일
      2008.10.17 08:35
      그냥 순수하게 아스키 문자열로 보내세요. 보내신 데이터는 아스키코드를 헥사값으로 변경해서 보낸거네...
    • 석주현
      2008.10.17 10:22
      <!--CodeS--> var tmpBuff : array[0..100] of Byte; begin tmpBuff[0] := $30; tmpBuf...
    • 장성호
      2008.10.17 13:24
      소나기님이 제시한 방법으로 하면됩니다. 한가지 팁을 알려드리면 string 2byte를 1Byte binary로...
    • 이정욱
      2008.10.18 05:25
      최신 버전이 아니면, 최신으로 소스를 바꾸시는것이 좋습니다. 사용하시는것이 델2007이 나오기 전에 나...
    • 소울해커
      2008.10.18 20:18
      답변 감사합니다. 버전은 6.10 으로 라이센스를 받은 소스입니다. dac.inc 파일을 못찾아서...; ...
    • coderoad
    • 2008.10.17 03:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.10.17 21:46
      안녕하세요.. SHFormatDrive API 는 시스템의 포맷 다이얼로그를 띄워 주는 것입니다.. 그러므로, ...
    • coderoad
      2008.10.17 22:03
      감사합니다. 유용하게 사용하겠습니다.