본문 바로가기

Delphi Tip/파일26

내 실행파일 정보보기 내 실행파일 정보보기 procedure TForm1.Button1Click(Sender: TObject); const InfoNum = 10; InfoStr: array[1..InfoNum] of string = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments'); var S: string; n, Len, i: DWORD; Buf: PChar; Value: PChar; begin S := Application.ExeName; n := GetFileVersion.. 2024. 5. 23.
파워포인터 파일 다른이름으로 저장 파워포인터 파일 다른이름으로 저장 procedure Tfrm_Main.button_ppt_openClick(Sender: TObject); var msppt:variant; //PowerPoint Application 변수 mspps:variant; //PowerPoint Presentation 변수 mspps_slides_totalcount:integer; // PowerPoint Slides Total count 변수 begin msppt:=CreateOleObject('Powerpoint.Application'); msppt.visible:=true; msppt.WindowState:=ppWindowMinimized; mspps:=msppt.Presentations.open('c:\bbbb.ppt'.. 2024. 4. 16.
디렉토리 삭제 및 하위 디렉토리 파일 삭제 디렉토리 삭제 및 하위 디렉토리 파일 삭제 uses ShellAPI; /---------------------------------------------------------------- // 디렉토리 및 파일을 지운다. // 하위 디렉토리와 모든 파일도 함께 지워진다. // 인자 설명 // - DirName : 지울 디렉토리명 // - UseRecycleBin : 휴지통을 사용할 것인가 여부 (아니면 영구삭제) // 리턴값 설명 // - 성공 여부 //---------------------------------------------------------------- function MinDeleteFile(const DirName : string; const UseRecycleBin: Boolean):.. 2024. 3. 12.
프로그램에 사용 DLL 목록 가져오기 프로그램에 사용 DLL 목록 가져오기 uses TlHelp32; {$R *.dfm} procedure EnumModules(Strings: TStrings); var Snapshot: THandle; ModuleEntry: TModuleEntry32; NextModule: BOOL; begin Snapshot := CreateToolhelp32Snapshot( TH32CS_SNAPALL, GetCurrentProcessID ); ModuleEntry.dwSize := SizeOf( TModuleEntry32 ); NextModule := Module32First( Snapshot, ModuleEntry ); while NextModule do {델마당만세} begin Strings.Add( ModuleE.. 2024. 3. 6.
델파이 TcxDBTreeList 엑셀변환 델파이 TcxDBTreeList 엑셀변환 Delphi에서 TcxDBTreeList에서 조회된 자료를 엑셀로 변환하는 과정은 몇 단계로 이뤄집니다. 아래는 간략한 예제 코드입니다. 이 코드는 DevExpress VCL 컴포넌트 라이브러리의 TcxDBTreeList 및 TcxGrid 컴포넌트를 기반으로 합니다. 엑셀 변환에는 OLE Automation을 사용합니다. 엑셀 객체 초기화: 엑셀을 조작하기 위해 ExcelApplication, Workbook 및 Worksheet 객체를 생성합니다. uses ..., cxDBTL, cxGridExportLink, ComObj; var ExcelApp: Variant; Workbook: Variant; Worksheet: Variant; TcxDBTreeList 데.. 2024. 1. 5.
인터넷 URL 문서 저장하기 인터넷 URL 문서 저장하기 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, URLMon; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin.. 2024. 1. 3.
델파이 리소스(Resource)의 활용 2 델파이 리소스(Resource) 1. 리소스 Dll 만들기 리소스 Dll이란 말 그대로 리소스를 포함하고 있는 Dll을 말한다. 만드는 순서를 먼저 알아보자. 1. 리소스의 경로를 저장하고 있는 RC 파일을 만든다. 2. RC 파일을 Brcc32등으로 컴파일 하여 Res 파일로 만든다. 3. 만들어진 Res 파일을 Dll에 포함시킨다. (폼에 포함시키는것과 동일하다.) 4. Dll을 컴파일 한다. 2번까지는 지난번 강좌의 내용과 같다. 3번 항목의 Res를 Dll에 포함 시키는 부분은 폼에 하는것과 동일하다고 했는데 아래의 예제를 보면 왜 동일하다는 건지 쉽게 이해가 될 것이다. library ResOnly; {$R Resource.res} begin end. 아무런 함수등을 포함하지 않고 오직 리소스만.. 2023. 10. 18.
델파이 리소스(Resource)의 활용 1 델파이 리소스(Resource) 리소스 파일 만들기 리소스 파일은 바이너리 형태의 데이터로서 RCDATA라 부른다. 리소스 파일은 Res라는 확장자를 가지게 되는데 이 Res 파일을 만들기 위한 과정을 살펴 보자 Res 파일을 만들기 위해서는 Text로 작성된 RC 파일이 있어야 한다. 이 RC 파일은 Res 파일에 포함하고자 하는 데이터 이름과 데이터 식별자, 그리고 데이터로 구성된 Text 파일이다. RC 파일의 예 WAVEFILE WAVE c:\WaveSound.wav 이렇게 작성된 것이 RC 파일이다. 여기서 'WAVEFILE'은 리소스를 호출할 때 쓰일 이름이며 'WAVE'는 이 리소스가 WAVE 파일임을 명시하는 것이며 맨 뒷부분은 실제로 리소스에 적재될 파일의 경로와 파일명으로 구성되어 진다.. 2023. 10. 13.
델파이 리소스(Resource) 델파이 리소스(Resource) 리소스 파일 생성 리소스 파일은 바이너리 형태의 데이터로서 RCDATA라 부른다. 리소스 파일은 Res라는 확장자를 가지게 되는데 이 Res 파일을 만들기 위한 과정을 살펴 보자 Res 파일을 만들기 위해서는 Text로 작성된 RC 파일이 있어야 한다. 이 RC 파일은 Res 파일에 포함하고자 하는 데이터 이름과 데이터 식별자, 그리고 데이터로 구성된 Text 파일이다. RC 파일 WAVEFILE WAVE c:\WaveSound.wav 이렇게 작성된 것이 RC 파일이다. 여기서 'WAVEFILE'은 리소스를 호출할 때 쓰일 이름이며 'WAVE'는 이 리소스가 WAVE 파일임을 명시하는 것이며 맨 뒷부분은 실제로 리소스에 적재될 파일의 경로와 파일명으로 구성되어 진다. 이렇.. 2023. 9. 26.
프로그램간의 메모리공유 프로그램간의 메모리공유 파일 매핑(File Mapping)은 파일을 메모리에 매핑하여 여러 프로세스 간에 해당 메모리를 공유할 수 있도록 해주는 기술입니다. 파일 매핑을 사용하면 여러 프로세스가 동일한 데이터를 읽고 쓸 수 있으며, 이를 통해 프로그램 간 효율적인 통신 및 데이터 공유가 가능해집니다. 개념은 물리적인 주소공간을 예약하고 각 주소공간에서 그 물리적 주소의 논리적인 주소를 얻는것 입니다. 그리고 그 논리적 주소에 자료를 쓰고 읽는 것이지요. 예제1 물리적 주소를 예약하는 방법 hMap := CreateFileMapping ( $FFFFFFFF, nil, PAGE_READWRITE, 0, 1024, stMapNa me ); stMapName은 고유한 공유할 열쇠의 문자열입니다. const st.. 2023. 7. 5.
DLL만들기와 사용방법 DLL만들기와 사용방법 DLL를 만들기가 어렵다고 생각하시는 분이 있는데 그렇지 않습니다. DLL에 관한 이해는 다른분들도 많이 올려 놓으신것 같아서 여기서는 작성방법과 사용법에 대해서만 올려드립니다. 설명에서 FILE / NEW 라고 쓰여 있으면 FILE에 들어가서 NEW를 선택하라는 뜻입니다. DLL 만들기 0, DELPHI 실행 1, FILE / NEW / DLL 2, FILE / NEW FORM 또는 NEW DATA MODULE ( UNIT1.PAS나 FORM이 설정된다. ) 3, unit1.pas내에 implementation이라는 구절 아래에 다음과 같이 타이핑한다. function min(i,j:integer):integer; var p:integer; begin if i>j then p:=.. 2023. 6. 28.
DLL(Dynamic-link library)란 (5) DLL(Dynamic-link library)란 (4) 델파이에서의 DLL 작성은 그것을 이용하기 만큼이나 쉽다. 일반적인 코딩 스타일 을 그대로 유지하면 되기 때문이다. 하나의 차이점이라면 프로젝트 파일에서 program 대신 library를 기입하는 것이다. 그에 더해 exports절만 살짝 넣어주면 된다. 물론 우리가 일반적으로 사용하는 VCL하의 프로젝트 구조와는 약간 차이가 있지만, 콘솔(커맨드라인) 프로그램을 작성하는 경우 이런 형태가 일반적이다. 아래 형태의 프로젝트 내용이 이상하게 보이는 사람은 그냥 '정통 스타일의 파스 칼 구조'라고 보면 된다. 물론 반드시 '특정 구조로 작성하라'라는 규칙은 없다. library MinMax; // program 대신 library를 기입한다. func.. 2023. 6. 27.
DLL(Dynamic-link library)란 (4) DLL(Dynamic-link library)란 (4) DLL의 procedure나 function을 어디에서 import할 것인가? 물론, 그것을 사용하 는 unit 내에서 import할 수도 있다. 하지만 대부분의 경우, 개별 unit을 구성하고 그곳에 한 DLL내의 procedure나 function을 import하기 위한 코드를 모두 몰 아넣는 것이 일반적이다. 이렇게 DLL의 import를 목적으로 구성된 unit이 Import Unit이다. import unit의 좋은 예는 '{DELPHI}\Source\RTL\Win' 내의 unit들이다. 이것들은 모두 Windows API를 지원하기 위해 각 DLL별로 만들어진 모든 unit 의 소스가 있다. 이 unit들, 특히 Windows.pas를 자.. 2023. 6. 26.
DLL(Dynamic-link library)란 (3) DLL(Dynamic-link library)란 (3) 윈도우즈가 실행파일을 구동시키는 과정을 살펴보자. 이것은 Windows 95나 Windows NT등의 WIN32에 국한되는 설명이다. *.EXE 형태의 프로그램이 로딩된다면 우선 커널 프로세스 하나가 생성되어 작동한다. 커널 프로세서의 주 역할은 메모리 영역을 구성하는 것이다. 커널 프로세스가 억세스할 수 있는 메모리 범위 는 32bit 범위, 즉 4기가 바이트에 이른다. 다음으로 커널파일매핑 프로세스가 생성되어 작동한다. 이 프로세스는 실행파일을 하드디스크등의 저장소로부터 커널 프로세스의 메모리 영역으로 복사한다. 이 과정을 통해 실행파일은 실제의 어드레스로 매핑된다. 다음으로 프로그램이 DLL을 이용하고 있다면 이 DLL을 찾아 시스템을 뒤진다... 2023. 6. 23.
DLL(Dynamic-link library)란 (2) DLL(Dynamic-link library)란 (2) DLL은 Dynamic-link library의 약자로 한마디로 표현하자면 동적으로 연결되는 램상주 라이브러리이다. Windows 환경하의 프로그래밍에서 DLL은 단순한 라이브 러리 이상의 의미를 가진다. 우리가 작성한 어플리케이션은 DLL의 징검다리를 뛰 어다닌다. Windows의 많은 부분이 DLL로 구성된 탓이다. Windows의 커널, 그래픽 인터페이스, 디바이스 드라이버등은 모두 DLL로 구성되어 있다. 실제로 Windows 하의 프로그래밍 환경에서 DLL과 완전히 별개인 어플리케이션은 존재할 수 없다. 우리가 Windows API가 DLL을 호출하는 것은 당연한 것이라 치고, VCL 역시 DLL 위에서 구성된 것이다. 심지어 DLL이 깨어.. 2023. 6. 22.
DLL(Dynamic-link library)란 (1) DLL(Dynamic-link library)란 (1) DLL은 단지 procedure와 function만을 외부에 제공할 수 있다. DLL이 procedure 나 function의 연결점을 외부에 제공하는 것을 export라고 한다. 실행파일에서 DLL의 procedure나 function의 연결점에 연결하는 것은 import라고 부른다. DLL 을 이용하기 위해서는 반드시 DLL의 export된 procedure나 fuction중 사용하고자 하는 것을 import하여야 한다. import는 아주 간단하다. 일반 procedure나 function의 선언에서 stdcall, external, name등의 키워드들을 추가로 사용하면 그만이다. 예를들어, Windows API중 "user32.dll"에 들.. 2023. 6. 21.
REST 기반 파일 업로드와 다운로드 구현하기 https://blog.hjf.pe.kr/518 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 이 글에서는 REST API 기반 파일 업로드와 다운로드 구현방안을 설명합니다. REST 서버와 REST 클라이언트를 이용해 기능을 구현했습니다. REST 기반 파일 업로드와 다운로드 구현 REST API 구현 시 파일 blog.hjf.pe.kr 2021. 10. 9.
델파이 DLL 사용 방법 델파이 DLL 사용 방법 1. DLL 생성 방법 File > New > Other > Delphi Projects > DLL Wizard 선택하면 기본 DLL 프로젝트가 생성됨. 2.DLL 호출 방법 => 동적사용 procedure TForm1.Button1Click(Sender: TObject); type TFunc = function(s:string) : string; //dll 함수 설정 var Handle : THandle; MyFunc : TFunc; begin Handle := LoadLibrary('파일명.dll'); if Handle 0 then begin @MyFunc := GetProcAddress(Handle, 'dll함수명'); if @MyFunc nil then begin //DL.. 2021. 10. 8.
파일 경로/이름/확장자 등 알아내기 파일 경로,이름,확장자 등 알아내기 Example code : Extract all of the parts of a full file name 코드 var fullFileName : string; begin // Set up a full file name with drive and path fullFileName := `C:\Program Files\Borland\Delphi7\Projects\Unit1.dcu`; // Show the component parts of this full name ShowMessage(`Drive = `+ExtractFileDrive (fullFileName)); ShowMessage(`Dir = `+ExtractFileDir (fullFileName)); ShowMess.. 2021. 10. 7.
Unix파일 (.sam) 델파이에서 읽기 방법 Unix파일 (.sam) 델파이에서 읽기 방법 procedure ReadUnixLn(var fd: TextFile; var s: string); var i,a: integer; c: char; begin i := 0; a := 0; while ( not Eof(fd) ) do begin Read(fd,c); if ( c=Chr(10) ) then exit; SetLength(s,i+1); s[i] := c; Inc(i); inc(a); end; end; procedure TfrmSisdMain.Button2Click(Sender: TObject); var fd: TextFile; s: string; begin try AssignFile(fd,'C:\Root\post_real\IN\20140219.IAQ0.. 2021. 10. 6.