::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-05 20:55:53, Hit : 5196, Vote : 1490
 Convert between a DFM and a TXT file

// 델파이의 폼파일 DFM (binary Delphi Form File) 을 일반 텍스트 파일로
// 변환하는 방법은 ObjectResourceToText와 ObjectTextToResource 를 사용합니다
// ObjectResourceToText : converts the binary representation of an object
//        resource into more readily understandable text.
// ObjectTextToResource : converts a symbolic text representation of an object
//        into the binary representation into Delphi's internal binary representation.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
   TDFMorTXT = (ConvertToForm, ConvertToText);

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

function ConvertFormOrText(FileToConvertFrom: string;
                           ConversionType: TDFMorTXT): boolean;
var
  InputStream, OutputStream: TFileStream;
  FileToConvertTo: string;
begin
  Result := True;
  FileToConvertTo := FileToConvertFrom;

  {파일의 확장자를 변환하는 방법에 따라 바꾼다}
  case ConversionType of
    ConvertToForm: {TXT -> DFM}
      begin
        FileToConvertFrom := SysUtils.ChangeFileExt(FileToConvertFrom, '.TXT');
        FileToConvertTo   := SysUtils.ChangeFileExt(FileToConvertFrom, '.DFM');
      end;
    ConvertToText: {DFM -> TXT}
      begin
        FileToConvertFrom := SysUtils.ChangeFileExt(FileToConvertFrom, '.DFM');
        FileToConvertTo   := SysUtils.ChangeFileExt(FileToConvertFrom, '.TXT');
      end;
  end;

  try
    try
      {file stream 을 만든다}
      InputStream  := TFileStream.Create(FileToConvertFrom, fmOpenRead); {읽기용}
      OutputStream := TFileStream.Create(FileToConvertTo, fmCreate); {쓰기용}

      {변환}
      case ConversionType of
        ConvertToForm: ObjectTextToResource(InputStream, OutputStream);
        ConvertToText: ObjectResourceToText(InputStream, OutputStream);
      end;
    except
      on EStreamError do
        Result := False;
    end;
  finally
    InputStream.Free;
    OutputStream.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    if UpperCase(ExtractFileExt(OpenDialog1.FileName)) = '.DFM' then
      ConvertFormOrText(OpenDialog1.FileName, ConvertToText) {DFM -> TXT}
    else if UpperCase(ExtractFileExt(OpenDialog1.FileName)) = '.TXT' then
      ConvertFormOrText(OpenDialog1.FileName, ConvertToForm); {TXT -> DFM}
  end;
end;

end.






531   [윈도우즈 API] bitmap 인쇄하기  김영대 2003/03/05 5326 1364
530   [윈도우즈 API] 폼의 최대/최소화 막기  김영대 2003/03/06 5325 1426
529   [윈도우즈 API] 마우스의 모양 바꾸고 이동범위 제한하기  김영대 2003/03/05 5319 1301
528   [일반/컴포넌트] 문자열의 바이트수가 아닌 실제 글자수 구하기  김영대 2003/03/07 5317 1171
527   [일반/컴포넌트] 절대경로와 상대경로 결합  김영대 2004/08/25 5315 1475
526   [일반/컴포넌트] Memo의 커서를 특정 위치로 보낸후 scroll 시키기  김영대 2003/03/05 5313 1192
525   [일반/컴포넌트] MS-OutLook 으로 메시지 보내기  김영대 2003/03/07 5312 1212
524   [윈도우즈 API] 날짜변형에 대해서...  김영대 2003/03/04 5307 1322
523   [윈도우즈 API] 윈도우즈 탐색기에서 "Copy" 될 파일목록 구하기  김영대 2003/03/07 5302 1389
522   [일반/컴포넌트] TIFF Images and manipulation  김영대 2003/03/07 5302 1304
521   [윈도우즈 API] Task bar 에 나타나지 않는 프로그램 만들기  김영대 2003/03/07 5296 1541
520   [시스템] 내 프로그램의 실행 우선순의 바꾸기  김영대 2004/07/24 5295 1434
519   [윈도우즈 API] 전체 화면(Full Screen) 만들기  김영대 2003/03/29 5293 1354
518   [윈도우즈 API] 휴지통이 비어있는지 확인하기  김영대 2004/08/05 5292 1295
517   [일반/컴포넌트] 프린터로 escape 문자 출력하기(raw print)  김영대 2003/03/07 5288 1321
516   [일반/컴포넌트] 다른 윈도우의 PageControl(TabControl) 상태 알아내기  김영대 2004/09/13 5277 1383
515   [시스템] 여러 프로세스간에 자료 공유하기  김영대 2003/03/04 5277 1347
514   [일반/컴포넌트] 디렉토리 검색하여 파일 찾기  김영대 2003/03/05 5275 1520
513   [일반/컴포넌트] 문자열의 끝에서부터 검색하는 Pos() 함수  김영대 2003/03/07 5273 1206
512   [일반/컴포넌트] Task bar 에 나타나는 프로그램 아이콘 바꾸기  김영대 2004/08/11 5267 1256
511   [윈도우즈 API] RichEdit에 입력한 문장의 실제 높이 구하기  김영대 2003/03/06 5258 1471
510   [시스템] 마우스 포인터 속도 바꾸기  김영대 2003/03/06 5254 1295
509   [네트웍/인터넷] Read/Write to COM Port  김영대 2003/03/07 5253 1255
508   [시스템] 다른 Application 생성과 소멸에 대하여...  김영대 2003/03/04 5248 1413
507   [COM/OLE] How to register an OCX  김영대 2003/03/06 5243 1209
506   [COM/OLE] Shockwave Flash ActiveX 사용하기 예제  김영대 2004/08/09 5242 1391
505   [일반/컴포넌트] 주어진 달의 주수  김영대 2003/03/05 5241 1698
504   [일반/컴포넌트] 특정 레지스트리 키 의 모든 목록을 한방에! 읽어오기  구창민 2003/03/14 5240 986
503   [시스템] CD-ROM의 변경여부를 감시하기  김영대 2003/03/07 5240 1350
502   [알고리즘] 숫자를 KB, MB, GB 단위로 환산하기  김영대 2003/11/13 5236 1194
501   [데이터베이스] Paradox 테이블이 깨졌을때...  김영대 2003/03/05 5228 1250
500   [일반/컴포넌트] 명령행 인자(command line argument) 사용하기  김영대 2003/03/05 5228 1363
499   [COM/OLE] 떠있는 모든 Internet Explorer 를 강제 Refresh 시키기  김영대 2004/09/20 5224 1346
498   [시스템] 윈도우즈 서비스 상태 구하기  김영대 2004/07/22 5223 1323
497   [데이터베이스] DBGrid 에서 선택된 필드의 타이틀을 굵게  김영대 2003/03/04 5220 1430
496   [윈도우즈 API] 현재 키보드 입력 언어 구하기  김영대 2004/07/24 5219 1399
495   [윈도우즈 API] 모서리가 둥근(rounded ends) TEdit 만들기  김영대 2003/03/07 5219 1329
494   [윈도우즈 API] 메모(TMemo)의 커서(캐럿)모양 바꾸기  김영대 2003/03/05 5216 1958
493   [시스템] CPU의 사용률 구하기  김영대 2003/03/07 5214 3326
492   [일반/컴포넌트] ListBox의 내용을 클립보드로 복사하기  김영대 2003/03/05 5207 1172

[이전 10개] [1]..[11] 12 [13][14][15][16][17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2024 Zeroboard / skin by zero