2018년 5월 23일 수요일

델파이 dcu 파일 생성 문제

델파이에 외부 페키지를 설치 할 때 무심고 Options .. > Library Path.. 에 새로운 패키지의 Souurce Path 를 설정 하였는데 
새로운 프로젝트 생성하고 매번 컴파일때마다 해당플렛폼의 디버거등에 실행파일과 사용된 외부 콤포넌트들의 dcu 가 전부 생성되어  '.\$(Platform)\$(Config)'  폴더가 아주 지저분해집니다.
2가지의 방법으로 해결해봅니다.

1. 각각의 프로젝트의 옵션 > Building > Delphi Compiler 에서 아래와 같이 Unit output directory를 공란으로 만들어주면됩니다.  당초에는 '.\$(Platform)\$(Config)'로 입력되어 있습니다. (2022.11.11 수정합니다)



2. 컴퍼넌트 설치시 별도의 LiB 폴더를 하나 만들고  Options.. > LIBrary Path.. 에 방금 만든 폴더를 지정해줍니다.

외부 페키지 포로젝트(화면 오른쪽) Options 에서 unit out Path를 설정하되
방금 만든 패스를 설정하면 패키지 인스톨 할 때 생성된 dcu를 찾게됩니다.


컴포넌트 사용중 컴파일에러가 나는 경우가 있는데..
dcu 에서 res 파일이나 frm 파일을 찾게 되어서인 것 같아요.
소오스 폴더에서 res 파일과 frm 파일을 복사하여 방금 만든 폴더에 붙여 넣기 하면 되됩니다.
이렇게 되면 포로젝트에서 외부 콤포넌트를 사용해도 새로 컴파일하지 않고 생성된 DCU르 찾게됩니다.

이렇게 하기 싫으면 프로젝트 옵션에서 검색폴더에 해당 res 나 frm 파일이 있는 곳을 지정해주면 됩니다. 그러면 다시 dcu 파일이 무진장 생기네요. (^^;)






2018년 5월 13일 일요일

맥북에서 델파이로 맥북용 프로그램을 만들어 보기

맥북에서 파스칼로 프로그램을 해보려고 많은 시도를 해보았습니다.
라자루스를 깔아서 돌려 보았고 codeTypon 이란 것도 설치해보았으나 2% 부족함을 채우지 못했습니다.

맥북용의 Microsoft Remote Desktop 프로그램이 있습니다.
이 프로그램은 맥북에서 윈도우OS 데스크탑을 원격연결하는 프로그램입니다.
앱스토어에 가서 설치합니다.
윈도우용 노트북에서 원격연결을 체크해주고
파이어월에서 데스크탑 원격연결 확인해주고

노트북 ip 와 로그인아이디 와 패소드를  넣으면 연결이 됩니다.


이제 이화면에서 델파이가 설치된 폴더로가서 paserver 폴더에 있는 paserver xx.pkg 를 복사한다음

Cloud (저는 드롭박스)를 이용하여 맥으로 복사해온다음 설치합니다.
원격 데스크탑창은 옆으로 살짝 옮겨 놓고, 맥의 데스크탑에서 작업합니다.
PaServerManager를 실행하여
이름입력하고 Scratch Folder위치 기억해둡니다.
파이어월에서 들어오는 설정을 허용할 것인지를 묻는 돌출창이뜨면  허용하시고요.
그림의 가장 왼쪽 아이콘에서 선택하여 시작합니다.
시작하면 암호를 입력하라고 나옴니다.
윈도우에서 맥북으로 연결해 들어올때의 암호입니다.
적당히 넣고 Return키를 누릅니다.
i 키를 입력하여 아이피를 확인합니다.
이젠 원격연결화면으로 돌아가서 델파이를 실행하고 Tools > Option > Environment Options
> Connection Profile Manager 를 선택하고, 아래쪽 추가 버튼을 크릭한 다음
Platform 에는 OS X, Host Name = 조금전에 맥의 ip 를 입력합니다.
암호를 입력하고 , Test Connection 버튼을 크릭하면 연결을 확인 할 수 있겠습니다.

왼쪽 트리박스에서 sdk manager를 선택하고 
OS X을 설치합니다.
프로젝트를 하나 만들고 당연히 OS X으로 설정해야죠.
버튼 올리고 이벤트 발생한다음.
저장합니다.
과감히 실행버튼을 누르면 맥의 데스탑에 있는 콘솔에 작동메세지가 보이고 데스크탑에  델파이로 만든 프로그램이 실행됩니다.
이렇게 말이죠.
아까 기억해 두었던 Scratch 폴더를 찾아가면 생성된 파일이 보일 것입니다.
좋은 저녁이네요.














2018년 5월 12일 토요일

부트캠프를 이용해 윈도우10을 사용시 생성되는 ._*.* 파일 삭제하기.

부트캠프를 이용해 윈도우10을 사용시 생성되는 ._*.* 파일 (.ds_store) 이 눈에 거슬립니다.
특히나 usb에 mp3파일 복사하고 나서 윈도우에서 보면 작난이아닙니다.
재생시에도... 랙이 걸린것 처럼... 해멥니다.

맥에서는 구굴링하면 해결방법이 있는데 윈도우에서는 일일이 찾아서 삭제해야 합니다.
해서, 윈도우에서 삭제하는 프로그램을 델파이로 만들었는데 잘안되더군요.
파일이름에 "." period 가 2개 있어서 그런것 같아요.

삽질을 수시간 하던중.........
결국 파일삭제시

uses ShellApi

function TForm3.DeleteFileDust(iPath: string): boolean;
var
   F : TShFileOpStruct;
begin
   FillChar(F, SizeOf(F),#0);
   F.Wnd := Handle;
   F.wFunc := FO_DELETE;
   F.pFrom := PChar(iPath+#0#0);
   F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
   Result:= (ShFileOperation(F)=0);
end;

붉은 글씨와 같이 바꾸니 삭제가 되네요.
근데? 휴지통으로 가야하는데 바로 삭제가 되버리네요.
꼭, 확인후 삭제하세요.
(No)를 선택해야 삭제됩니다. 이프로그램으로 인해 잘못되어도 책임 안집니다.


허접하지만 파일 올려둡니다. 다운 이곳에서.
압축 풀어 바로 실행하면됩니다.

#._ #DS_Store #맥북 #윈도우 #dot #double dot #double perid




2018년 5월 4일 금요일

맥북에서 트랙패드로 인해 키보드입력시 어려움 있을때

맥북의 트랙패드로 인해 키보드 입력시 커서 위치가 바뀌거나 변동하여 어려움이 있을 때.
맥북에 마우스를 연결하여 사용하면 트랙패드의 기능을 잠시 끄고자 하면
시스템 환경설정 > 손쉬운 사용 > 마우스와 트랙패드에서
마우스 또는 무선트랙패드가 있으면 내장 트랙패드 무시하기를 선택하면 됩니다.

부트캠프에서 윈도우10을 사용 중이라면 화면 오른족하단의 BootCamp 아이콘에서 트랙패드 설정에서 한개의 손가락 > 탭하여 크릭하기를 선택 제외하면 마우스 커서는 움직여도 타이핑에는 지장이 없습니다.



#트랙패드,#USB,#MOUSE,#죽이기,#TrackPad,#마우스,#맥북,#Macbook

2018년 5월 2일 수요일

델파이 StatusBar Height 문제

델파이를 사용하다보니
언제부터인가 Statusbar 에서 SimpleText 를 사용할라 치면
가끔씩 높이가 줄어들어 글자 하단이 잘리는 경우가 있다.

StatusBar.Canvas.Font := StatusBar.Font;
로 해주고
속성창에서 StatusBar.ParenFont 를 True; <코딩으로 하지마세요>
로 해주면 정상으로 돌아온다.


2017년 10월 4일 수요일

맥북에서 콘솔프로그램 실행해보기...

맥북에서 라자루스를 이용하여 콘솔용 프로그램을 만들어 실행해보았는데,
윈도우와는 약간 환경이 다른 것 같네요.
결과를 확인 할 수 없습니다.
아래와 같은 프로그램을 만들어 실행하면 화면만 깜박하고 넘어가버리네요...

program Project2;
{$mode objfpc}{$H+}
uses
  Classes;
begin
  writeln('Hello World!');
  writeln('안녕하세요');
  ReadLn;
end.

결국!
finder 에서 해당 파일을 선택하고 열기를 하니 터미널이 열리고 실행 결과를 확인할 수 있네요.
잠시 멈추는 기능은 구현하기 힘드는 걸까?

아직! 다른 방법을 확인해보지 못했습니다.<2017.10.4>

2017년 10월 3일 화요일

공개된 소스 활용하여 Swift 에서 프로그램하기 (podfile)

리치에디터라는 소스공개 프로그램을 내 컴에서 실행해 보려고 하면 github 에서 해당 프로젝트를 받아온다음 pod를 생성하고 cocoapods을 이용하여 자동 버전관리를 할 수 있습니다.(예시임).

터미널에서
$ sudo gem install cocoapods
$ pod setup
하여 코코아팟을 설치합니다.

다운 받은 폴더로 이동하여
터미널에서 pod install 합니다.

swift를 실행하고 프로젝트 열기를 하지 말고 워크스페이스 열기합니다.

새로 프로젝트를 만들경우에는 생성된 프로젝트와 동일한 폴더에
워크스페이스를 만들고
podfile 파일을 생성한 다음
터미널에서 해당 폴더로 이동한 다음 pop install 합니다.
프로젝트의 '/' 위치에 있는 podfile 파일 샘플입니다.


use_frameworks!

target 'RichEditorViewSample' do
    pod "RichEditorView", :path => "../"

end

만약 github에서 가져오려면 path 를 https:// 하여 지정하면 되겠지요.
즐거운 프로그램 되세요.



2017년 6월 4일 일요일

안드로이드 개발자 옵션 보이게하기

On most Android devices,  the Developer options menu is hidden by default.

To unhide the Developer options menu:

1.  Tap Apps Apps Icon 
2.  Tap Settings Icon Settings 
3. Tap  About device Settings About Icon 

4. Scroll to and touch Build number seven times
5. Go back to Settings, the Developer options menu will now appear under Settings Icon Settings > General > Developer options Settings Developer Icon .

2017년 5월 23일 화요일

No bootable device Insert boot disk and press any key.

맥북(macbook)에 부트캠프(bootcamp)를 사용하여 윈도우 10을 설치하였는데,
어느날 갑자기, osx로 부팅하고 다시 windows로 부팅하려고 하였더니.
No bootable device Insert boot disk and press any key.
라는 에러가 나오며 윈도우10이 부팅이 안된다.
물론 컴퓨터 전원을 켬과 동시에 option(alt) key를 눌러 osx 와 windows를 선택 할 수는 있는데 매번 그러기에는 번잡하였다.
무었이 원인 일 까 조사했더니 윈도우 설치과정에서 파티션이 한개 더 잡혀버렸다(100M).
그래서 부팅시 먼저 선택해 버린다.
혹시나 하고 easybcd.exe 를 다운 받아 설치하고 ( http://neosmart.net/EasyBCD/ )
임의의 부팅을 만든다음 멀티부팅으로 시작하도록 하였더니
전원 켬과 동시에 멀티부팅 화면이 나타난다.
다시 easybcd를 실행하여 추가한 멀티부팅 메뉴를 삭제하고 시간지연을 없앴더니
곧바로 부팅이 된다.
몇일간 고민했었는데 해결이 되었다.
추가! osx 로 다시 갔다가 오니 또 안되네요.
아무래도 efi... 관련인 것 같은데 해결을 못했네요.
추가(2017.5.23)! OSX를 최신버전으로 업그레이드 했더니 해결되었습니다.
참고로 efi 관련자료는 http://m.blog.naver.com/sun2ace/220297691509 참고.


2017년 2월 5일 일요일

MS의 SpVoice를 임포트하여 글 읽어 주기를 구현했네요.

목소리가 별로 네요... 예전에 구글 API 이용 했었는데 그걸로 돌아 갈까....
음성을 선택 할 수 있는데 별반 차이가 없네요.

procedure TfrmStudyLaw2.FormCreate(Sender: TObject);
var
FileName: String;
SOTokenVoice: ISpeechObjectToken;
SOTokenVoices: ISpeechObjectTokens;
....
begin
// speech
SpVoice1.EventInterests:= SVEAllEvents;
SOTokenVoices:= SpVoice1.GetVoices('','');
for i := 0 to SOTokenVoices.Count-1 do begin
SOTokenVoice:= SOTokenVoices.Item(i);
ComboBoxVoices.Items.AddObject(SOTokenVoice.GetDescription(0), TObject(SOTokenVoice));
SOTokenVoice._AddRef;
end;
if ComboBoxVoices.Items.Count > 0 then begin
ComboBoxVoices.ItemIndex := ComboBoxVoices.Items.IndexOf(SpVoice1.Voice.GetDescription(0))
end;
end.


procedure TfrmStudyLaw2.Button5Click(Sender: TObject);
const iSpeechFlags: integer = SVSFlagsAsync + SVSFPurgeBeforeSpeak + SVSFIsXML;
var
idx, jdx, kdx: Integer;
begin
SpVoice1.Rate:= tbRate.Position;
for idx := 0 to SpinEdit1.Value-1 do begin
if CBStopSpeechA.Checked then Break;
for jdx := 0 to ListBox1.Items.Count-1 do begin
if CBStopSpeechA.Checked then Break;
if ListBox1.Checked[jdx] then
for kdx := 0 to SpinEdit2.Value-1 do begin
if CBStopSpeech1.Checked then Break;
SpVoice1.Speak(ListBox1.Items[jdx],iSpeechFlags);
repeat
Application.ProcessMessages;
until (SpVoice1.WaitUntilDone(10));
end;
CBStopSpeech1.Checked:= False;
end;
end;
CBStopSpeechA.Checked:= False;
end;

델파이의 부활(Antigravity와의 만남)?

 델파이 프로그램을 사용하여 개인적으로 필요한 프로그램을 생성해 왔는데, 얼마전부터 파이썬으로 옮겨갔다.  그런데 Google 의 Antigravity를 만나고 나서 델파이에 대한 미련을 버리지 못해  제미나이가 Delphi이에 대한 학습도 엄청 했을...