<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=LazarusCompleteGuide%3A5.2</id>
	<title>LazarusCompleteGuide:5.2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=LazarusCompleteGuide%3A5.2"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=LazarusCompleteGuide:5.2&amp;action=history"/>
	<updated>2026-05-02T01:27:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=LazarusCompleteGuide:5.2&amp;diff=3159&amp;oldid=prev</id>
		<title>Onionmixer: LCG 5.2 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=LazarusCompleteGuide:5.2&amp;diff=3159&amp;oldid=prev"/>
		<updated>2013-02-28T13:57:52Z</updated>

		<summary type="html">&lt;p&gt;LCG 5.2 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==구성 파일==&lt;br /&gt;
&lt;br /&gt;
연속된 세션들 간에 현재 상태를 저장할 필요가 있는 프로그램이라면 그 구성을 저장할 수 있어야 한다. 프로그램과 관련된 세션 데이터를 저장하는 데에는 구성 파일이 적격이다. 세션 정보는 전역적이거나 (시스템의 모든 사용자에게 적용) 사용자 특정적, 둘 중 하나다. 플랫폼 독립적 프로그램 또한 구성 파일이 애플리케이션의 리소스 파일을 저장할 장소를 인지하도록 요한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SysUtils 유닛은 구성 파일을 위한 올바른 보관(storage) 위치를 발견하기 위한 특수 루틴을 포함한다. GetAppConfigDir 와 GetAppConfigFile 을 이용해 보관 디렉터리 또는 구성 파일의 완전한 파일명을 검색할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
function GetAppConfigDir(Global: Boolean): String;&lt;br /&gt;
function GetAppConfigFile(Global: Boolean): String;&lt;br /&gt;
function GetAppConfigFile(Global: Boolean; SubDir: Boolean): String;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
두 함수 모두 단일 파라미터 Global을 가진다. 이것이 True인 경우, 전역적 구성 파일명이 리턴되고, False일 경우 현재 사용자 계정에 해당하는 구성 파일명이 리턴된다. 실제 위치가 어딘지는 운영체제에 따라 좌우되며, 개발자나 최종 사용자에게 중요하지 않다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
하지만 디버깅을 목적으로 하거나 파일 내용을 수동으로 검사하는 경우라면 구성 파일의 보관 위치를 아는 것이 유용하다. 따라서 아래 표에 몇 가지 운영체제에서 구성 파일의 실제 위치를 표시하였다. 아래 정보는 FPC 2.2.4 버전의 Windows XP에 적용된다 (영문 버전 먼저). 해당 정보를 얻기 위해 사용한 프로그램은 configtest 라고 부른다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Windows 6.x 의 새 디렉터리 구조는 (Vista와 Windows 7이 마이크로소프트에서 내부적으로 알려지듯이) 기본적으로 Windows 5.x의 (Windows 2000과 XP) 디렉터리 구조와 다르다. 물론 마이크로소프트사가 추후 윈도우 버전에서 이를 다시 바꾸기로 결정할지도 모를 일이다. 따라서 GetAppConfigdir 와 같은 루틴을 사용해야 하는 이유와 (또는 Windows API에서 그에 해당하는 루틴을 사용) 하드코딩된 경로는 절대 사용해선 안 되는 이유가 더욱 더 중요해진다. Windows 98SE에서 프로그램을 실행하면 알 수 있듯이 (내부에선 Windows 3.98로 알려짐) 마이크로소프트사는 과거에 이 영역을 수차례 변경하였다. Windows 98SE는 Windows NT 계열과 같은 사용자 계정이 없으며, 경로는 아래와 같다:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 1px solid black;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigDir(True)||C:\WINDOWS\All Users\Application Data\CONFIGTEST\&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigDir(False)||C:\WINDOWS\Local Settings\Application Data\CONFIGTEST\&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigFile(True)||C:\WINDOWS\Local Settings\Application Data\CONFIGTEST\&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigFile(False)||C:\WINDOWS\Local Settings\Application Data\configtest\Configtest.cfg&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Windows XP와 Windows 98의 주요 차이점은 XP에서 로컬 구성 파일이 사용자마다 따로 보관된다는 점이다. Windows 98은 이 개념을 인식하지 못한다. 이번 경우 독일어와 영문 PC에서 동일한 결과가 나왔다. 물론 Linux에서는 완전히 다를 것이다. Debian GNU/Linux 5와 FPC 2.2.4. FreeBSD에 대한 예제는 동일한 결과를 제공한다:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 1px solid black;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigDir(True)||/etc/configtest/&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigDir(False)||/home/Username/.config/&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigFile(True)||/etc/configest.cfg&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigFile(False)||/home/Username/.config/configtest.cfg&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux와 FreeBSD에서는 전역 구성 파일이 /etc 내에 애플리케이션에 따라 다른 하위디렉터리에 보관되며, 로컬 구성은 현재 사용자의 홈 디렉터리 내 숨겨진 디렉터리에 보관되는데 이는 주로 /home/$USER/ 이긴 하나 어디든 위치할 수 있다. 점으로 시작하는 디렉터리 이름은 리눅스에서 숨겨진다. 파일을 저장하려면 먼저 파스칼 명령 MkDir 를 이용해 GetAppConfigDir 가 지정한 로컬 디렉터리를 생성해야 한다. 이것을 완료해야만 저장이 가능해진다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MacOS X에서 홈 디렉터리는 보통 /Users 하에 위치하므로 FPC 2.2.4 버전을 이용 시 아래와 같을 것이다:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 1px solid black;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigDir(True)||/etc&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigDir(False)||/Users/Username/.config/configtest&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigFile(True)||/etc/configest.cfg&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|GetAppConfigFile(False)||/Users/Username/.config/configtest.cfg&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
해당 정보를 얻기 위한 테스트 프로젝트는 아래와 같이 간단한 명령 행 프로그램이 될 수도 있고:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
program configtest;&lt;br /&gt;
{$apptype Console}&lt;br /&gt;
uses SysUtils;&lt;br /&gt;
begin&lt;br /&gt;
  WriteLn(&amp;#039;GetAppConfigDir(True):   &amp;#039;, GetAppConfigDir(True));&lt;br /&gt;
  WriteLn(&amp;#039;GetAppConfigDir(False):  &amp;#039;, GetAppConfigDir(False));&lt;br /&gt;
  WriteLn(&amp;#039;GetAppConfigFile(True):  &amp;#039;, GetAppConfigFile(True));&lt;br /&gt;
  WriteLn(&amp;#039;GetAppConfigFile(False): &amp;#039;, GetAppConfigFile(False));&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
아니면 위의 프로그램만큼이나 작성하기 쉬운 작은 GUI 프로그램이 될 수도 있다. 이러한 경우 TMemo 필드를 출력 위젯으로 사용한다. 창의 FormCreate 이벤트에 아래 내용을 삽입한다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
  Memo1.Lines.Add(&amp;#039;GetAppConfigDir(True):   &amp;#039; + GetAppConfigDirUTF8(True));&lt;br /&gt;
  Memo1.Lines.Add(&amp;#039;GetAppConfigDir(False):  &amp;#039; + GetAppConfigDirUTF8(False));&lt;br /&gt;
  Memo1.Lines.Add(&amp;#039;GetAppConfigFile(True):  &amp;#039; + SysToUTF8(GetAppConfigFile(True)));&lt;br /&gt;
  Memo1.Lines.Add(&amp;#039;GetAppConfigFile(False): &amp;#039; + SysToUTF8(GetAppConfigFile(False)));&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 GUI 프로그램을 사용 시 이점은 결과를 표시하기 위해 콘솔 창을 열 필요가 없이 개발 환경 자체에서 연구할 수 있다는 점이다. 두 프로그램의 결과는 물론 동일하다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:LazarusCompleteGuide]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>