사이드바 영역으로 건너뛰기

게시물에서 찾기분류 전체보기

21개의 게시물을 찾았습니다.

  1. 2012/02/25
    Delphi2007 + Firebird-2.5.1.26351-0_Win32_embed
    단단이아빠
  2. 2011/08/22
    (펌)재귀 호출을 이용한 폴더내의 파일 전부 검색하기
    단단이아빠
  3. 2011/08/04
    TWebBrowser 을 이용하여 웹페이지의 값을 가져올 때
    단단이아빠
  4. 2011/02/24
    Could not convert variant of type (String) into type (Double)(1)
    단단이아빠
  5. 2010/08/13
    퀀텀그리드 선택된 Row
    단단이아빠
  6. 2009/09/16
    CHARACTER SET KSC_5601 is not installed
    단단이아빠
  7. 2009/09/15
    현재 실행되고 있는 디렉토리
    단단이아빠
  8. 2009/09/02
    폴더 만들기
    단단이아빠
  9. 2009/09/02
    파일 이동
    단단이아빠
  10. 2009/08/25
    폴더의 파일 읽기
    단단이아빠

Delphi2007 + Firebird-2.5.1.26351-0_Win32_embed

로컬에서만 작업해야 할 프로젝트가 하나 있어서 디비로 acess 를 사용할 까 하다가 파이어버드를 사용하기로 하고 작업시작....

 

하루종일 삽질 중...

 

먼저 좀 편하게 제어하기 위해서

 

flamerobin 을 찾았다. 파이어버드 임베디드를 위한 gui 프로그램...

 

http://www.flamerobin.org/

 

 


사용자 삽입 이미지

 

그런데 문제는 예전에 깔아보았던 파이어버드 서버 때문에 C:\Windows\SysWOW64 에 gds32.dll 때문에 제대로 작동을 안한다.

 

뭔가 다른 방법이 있겠지만 지금은 바빠서리(이것때문에 언젠가 우리나라 it는 망할거다. 젠장) 기존에 있던 gds32,dll을 삭제하고 fbembed.dll를 gds32.dll로 이름 변경해서 복사했다. 혹시 몰라서  C:\Windows\system32에도 복사.

 

그외에

 

 

aliases.conf
firebird.conf
fbclient.dll
fbembed.dll
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
msvcp71.dll
msvcp80.dll
msvcr71.dll
msvcr80.dll
Microsoft.VC80.CRT.manifest
firebird.msg
 
도 몽땅 복사...
 
나중에 배포할 때는 이것중 하나씩 필요한 게 뭔지 확인해서 함께 배포해야 할테지...
 
 
일반 개발할 때는 D:\에 데이터베이스 파일을 넣어놓고 작업하다가 나중에 배포할 때는 경로를 ./의 형태로 해서 해야할 거 같다.
 
 
델파이에서 디비 연결은 unidac 을 사용한다.
 

사용자 삽입 이미지

 

일단 연결에 문제가 없으면 다른 데이터베이스 사용할 때와 같이 query 나 table 얹어놓고 데이터소스 연결해서 디비그리드나 디비텍스트박스 사용해서 처리 가능....

 

 

 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

(펌)재귀 호출을 이용한 폴더내의 파일 전부 검색하기

 

 

function TfmBackUp.FindFile(FolderName: String): Integer;
var
 RowIndex : Integer;
 SR : TSearchRec;
begin
 if (findFirst(FolderName+'\*.*',faAnyFile,Sr)) = 0 then
   repeat
     if (Sr.Name <> '.') and (Sr.Name <> '..') then
     begin
       if (SR.Attr and faDirectory) = faDirectory then
       begin
         FindFile(FolderName + '\'+SR.Name);
       end
       else
         ListBox1.Items.Add(Sr.Name);
     end;
   until FindNext(Sr) <> 0;
 FindClose(Sr);
end;

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

TWebBrowser 을 이용하여 웹페이지의 값을 가져올 때

wb1.OleObject.Document.getElementById('axisY').value

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

Could not convert variant of type (String) into type (Double)

Delphi 2009 + Unidac + Oracle 의 상황에서

 

insert 할 때 

 

 

Could not convert variant of type (String) into type (Double)

 

와 같은 에러가 뜰때가 있다.

 

아직도 왜 그런지는 모르지만 

 

현재의 상황은

 

1.insert 할 컬럼이 Number 이고 그 데이터를 쿼리문의 결과로 받아서 집어넣을 때

    예) 'insert into A (Col) values (''' + unqry.FieldByName('Col1').value+''')';

 

2.  unqry.FieldByName('Col1').value 이 Number 형 일 때

 

발생한다.

 

일단 'insert into A (Col) values (''' + IntToStr(unqry.FieldByName('Col1').value)+''')'; 으로 하면 해결은 된다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

퀀텀그리드 선택된 Row

cxGridTableView1.DataController.Values[ RecordIndex,ItemIndex ] 

 

 cxGrid1TableView1.Controller.FocusedRow.Index <-- 그려진 Row의 Index
 cxGrid1TableView1.Controller.FocusedRow.RecordIndex <-- 실제 레코드의 Index

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

CHARACTER SET KSC_5601 is not installed

1.에러 상황

 Win Xp Sp3 + Delphi 2009 + unidac 2.7 + Firebird 2.1 에서 작업한 파일을 다른 컴퓨터로 옮겨서 실행시키면 "CHARACTER SET KSC_5601 is not installed" 에러가 난다.

 

2.해결 방안

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

현재 실행되고 있는 디렉토리

ExtractFilePath(Application.exeName)

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

폴더 만들기

wdir := DCB_target.Drive + ':' + FormatFloat('00',E_cha.Value);
if Not DirectoryExists(wdir) then CreateDir(wdir);

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

파일 이동

if MoveFile(PChar(sOrgFileName),PChar(sNewFileName)) then
  begin
    ShowMessage(sOrgFileName+`을 `+sNewFileName+`로 옮겼습니다.`);
  end;
 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

폴더의 파일 읽기

procedure TfmMain.GetData;
var
DirInfo: TSearchRec;
r,Loop,I : Integer;
begin
  if cbb1.ItemIndex < 0 then
  begin
    ShowMessage('가져올 파일 갯수를 선택하세요.');
    Exit;
  end;

  btnSaveExcel.Enabled := False;
  btnInputDB.Enabled := False;

  AdvStrGrid2.Clear;
  AdvStrGrid2.RowCount := 2;

  if not FolderDlg1.Execute then
    FolderDlg1.Execute;

  r := FindFirst(FolderDlg1.Directory + '*.xls', FaAnyfile, DirInfo);

  Loop := 0;

  While r = 0 do
  begin
    Application.ProcessMessages;
    if Loop = StrToInt(cbb1.Items[cbb1.ItemIndex]) then Break;

    if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
          (DirInfo.Attr and FaVolumeId <> FaVolumeID))
    then
      //mmo1.Lines.Add(DirInfo.Name);
      SetFileName(DirInfo.Name);
      advgrdxcl1.XLSImport(FolderDlg1.Directory + '' + DirInfo.Name);
      AdvStrGrid2.ColCount := AdvStrGrid1.ColCount + 1;
      //DeleteFile(pChar(FolderDlg1.Directory + '' + DirInfo.Name));
      AdvStrGridFile.AddRow;
      AdvStrGridFile.Cells[0,Loop] := FolderDlg1.Directory + '' + DirInfo.Name;
    r := FindNext(DirInfo);
    Loop := Loop + 1;
  end;

  SysUtils.FindClose(DirInfo); // FindFirst에 의해 사용된 메모리를 해제
  btnSaveExcel.Enabled := True;
  btnInputDB.Enabled := True;
end;
 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크