본문으로 바로가기
  1. Home
  2. 컴퓨터/프로그래밍
  3. 라자루스 내문서 폴더 위치 구하는 방법

라자루스 내문서 폴더 위치 구하는 방법

· 댓글 0 · 바다야크

오픈 소스 윈도우 프로그램 통합개발환경 라자루스에서 내 문서 폴더 위치를 구하는 방법입니다. 라자루스는 델파이 개발환경을 리눅스용으로도 만들자 해서 시작된 프로젝트라서 아마도 최근 버전의 델파이에서도 같은 방법으로 구할 수 있지 않을까 생각됩니다.

How to get the "My documents" folder location in lazarus

라자루스 내문서 폴더
라자루스 내문서 폴더

예제를 위한 폼 디자인은 간단합니다. Button1은 내문서 폴더 위치를 구해서 labDocuments에 출력합니다. 전체 소스는 아래와 같습니다.

unit Unit1;

{$mode objfpc}{$H+}

interface

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

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    labDocuments: TLabel;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

uses
  shlobj;

 { TForm1 }

function GetMyDocumentsDir: string;
var
   r: Boolean;
   path: array[0..Max_Path] of Char;
begin
   r := ShGetSpecialFolderPath(0, path, CSIDL_PERSONAL, False) ;
   if not r
   then
      raise Exception.Create('Could not find MyDocuments folder location.') ;
   Result := Path;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  labDocuments.Caption := GetMyDocumentsDir;
end;

end.

GetMyDocumetsDir 함수가 내문서 폴더 위치를 반환하는데요, 아래는 실행한 모습입니다.

내문서 폴더 위치 구하기
내문서 폴더 위치 구하기

폴더 이름에 한글이 있으면 깨져 보일 수 있습니다. utf8 함수를 이용하여 한글이 제대로 나오도록 수정하는 루틴은 아래와 같습니다.

unit Unit1;

{$mode objfpc}{$H+}

interface

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

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    labDocuments: TLabel;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

uses
  shlobj, lazutf8;

 { TForm1 }

function LocalAnsiToUtf8( strAnsi: string): string;
begin
   SetCodePage( RawByteString( strAnsi), 949, FALSE);
   result  := AnsiToUtf8( strAnsi);
end;

function GetMyDocumentsDir: string;
var
   r: Boolean;
   path: array[0..Max_Path] of Char;
begin
   r := ShGetSpecialFolderPath(0, path, CSIDL_PERSONAL, False) ;
   if not r
   then
      raise Exception.Create('Could not find MyDocuments folder location.') ;
   Result := LocalAnsiToUtf8( Path);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  labDocuments.Caption := GetMyDocumentsDir;
end;

end.

한글 출력을 위해 LocalAnsiToUtf8() 함수를 추가했습니다. 이 함수를 사용하려면 uses절에 lazutf8 유닛을 추가해야 합니다.

라자루스 UTF8처리
라자루스 UTF8처리

내문서 폴더 위치가 한글 깨짐 없이 출력됩니다.

💬 댓글 0

이름을 저장합니다.

최근글 thumbnail 구글 원 VPN 핸드폰 보안 강화 thumbnail 쿠팡앱 광고 알림 끄기 (2) thumbnail 넥밴드 블루투스 헤드폰 S21 해외직구 사용후기 thumbnail 유튜브 내가 쓴 댓글 확인 삭제 방법 thumbnail 구글 크롬 주소창 검색 엔진 추가 방법 thumbnail 전자책 리더기 블루투스 리모컨 해외직구 추천 (1) thumbnail 스타일브이 환불 요청 방법 (3) thumbnail 갤럭시 핸드폰과 윈도우 컴퓨터 연결 방법
랜섬웨어로 고생 많으셨겠어⋯ 💬바다야크 윈도우가 업그레이드될 수록⋯ 💬바다야크 아이쿵. 저 이거 계속 써야하⋯ 💬swan 랜섬웨어 걸려서 데이타고 머⋯ 💬swan 일부러 숨겨 놓은 것인지 찾⋯ 💬바다야크