Q&A

  • 공통 모듈에 함수를 만들어 값을 불러오려고 합니다.
프로그램을 짜던중에 기존에 돌아가던 프로그램의 일부분을 공통모듈에 함수로 만들어 다른 창에서도 불러와서 사용하려고 하는데 잘 안되네요. 원래 돌아가던 소스코드는 아래와 같습니다. 많은 도움 부탁드립니다.

--------------------------------------------------------------------------------------------------------
procedure TfCharge.FormCreate(Sender: TObject);
begin
  try
    Ini := TIniFile.Create('.\feeset.ini');
    With Ini do begin
      CheckBox1.Checked := ReadBool('기본요금','USE1',CheckBox1.Checked);
      CheckBox2.Checked := ReadBool('기본요금','USE2',CheckBox2.Checked);
      CheckBox3.Checked := ReadBool('상세요금','USE1',CheckBox3.Checked);
      CheckBox4.Checked := ReadBool('상세요금','USE2',CheckBox4.Checked);
      CheckBox5.Checked := ReadBool('상세요금','USE3',CheckBox5.Checked);
      Edit1.Text := ReadString('기본요금','최초 무료적용 시간(분)','');
      Edit2.Text := ReadString('기본요금','기준 시간(분)','');
      Edit3.Text := ReadString('기본요금','기준 요금(원)','');
      Edit4.Text := ReadString('상세요금','주말 및 공휴일 기준 시간(분)','');
      Edit5.Text := ReadString('상세요금','주말 및 공휴일 기준 요금(원)','');
      Edit6.Text := ReadString('상세요금','일일 최대 요금(원)','');
      Edit7.Text := ReadString('상세요금','최대 요금(원)','');
    end;
  finally
    Ini.Free;
  end;//try
end;


procedure TfCharge.SpeedButton1Click(Sender: TObject);
var
Ini :TIniFile;

begin
  try
    Ini := TIniFile.Create('.\feeset.ini');
    With Ini do begin
      if CheckBox1.Checked = True then begin
          WriteBool('기본요금','USE1',CheckBox1.Checked);
          WriteString('기본요금','최초 무료적용 시간(분)',Edit1.Text);
      end else begin
          WriteBool('기본시간','USE1',CheckBox1.Checked);
          WriteString('기본요금','최초 무료적용 시간(분)','');
      end;

      if CheckBox2.Checked = True then begin
          WriteBool('기본요금','USE2',CheckBox2.Checked);
          WriteString('기본요금','기준 시간(분)',Edit2.Text);
          WriteString('기본요금','기준 요금(원)',Edit3.Text);
      end else begin
          WriteBool('기본요금','USE2',CheckBox2.Checked);
          WriteString('기본요금','기준 시간(분)','');
          WriteString('기본요금','기준 요금(원)','');
      end;

      if CheckBox3.Checked = True then begin
         WriteBool('상세요금','USE1',CheckBox3.Checked);
         WriteString('상세요금','주말 및 공휴일 기준 시간(분)',Edit4.Text);
         WriteString('상세요금','주말 및 공휴일 기준 요금(원)',Edit5.Text);
      end else begin
         WriteBool('상세요금','USE1',CheckBox3.Checked);
         WriteString('상세요금','주말 및 공휴일 기준 시간(분)','');
         WriteString('상세요금','주말 및 공휴일 기준 요금(원)','');
      end;

      if CheckBox4.Checked = True then begin
          WriteBool('상세요금','USE2',CheckBox4.Checked);
          WriteString('상세요금','일일 최대 요금(원)',Edit6.Text);
      end else begin
          WriteBool('상세요금','USE2',CheckBox4.Checked);
          WriteString('상세요금','일일 최대 요금(원)','');
      end;

      if CheckBox5.Checked = True then begin
          WriteBool('상세요금','USE3',CheckBox5.Checked);
          WriteString('상세요금','최대 요금(원)',Edit7.Text);
      end else begin
          WriteBool('상세요금','USE3',CheckBox5.Checked);
          WriteString('상세요금','최대 요금(원)','');
      end;

    end;// With Ini do begin
  finally
    Ini.Free;
  end;//try

  Self.Close;
end;
----------------------------------------------------------------------------------------------------------------------
2  COMMENTS
  • Profile
    이정욱 2008.06.25 02:23
    무슨 말씀이신지요..? 위의 이벤트 함수들을 공통으로 사용하고 싶으신건가요?

    만약 그렇다면 위 이벤트 함수 내의 객체들도 받아서 처리하게 하던지..

    아니면 위의 함수가 포함된 폼을 상속받아서 그 폼으로 개발 하시면 됩니다.

    전자의 경우, 각 폼의 객체 이름들이 같다고 가정하면..



    procedure CommonFormCreate(mForm: TForm);
    begin
    try
    Ini := TIniFile.Create('.\feeset.ini');
    With mForm do
    With Ini do begin
    CheckBox1.Checked := ReadBool('기본요금','USE1',CheckBox1.Checked);
    CheckBox2.Checked := ReadBool('기본요금','USE2',CheckBox2.Checked);
    CheckBox3.Checked := ReadBool('상세요금','USE1',CheckBox3.Checked);
    CheckBox4.Checked := ReadBool('상세요금','USE2',CheckBox4.Checked);
    CheckBox5.Checked := ReadBool('상세요금','USE3',CheckBox5.Checked);
    Edit1.Text := ReadString('기본요금','최초 무료적용 시간(분)','');
    Edit2.Text := ReadString('기본요금','기준 시간(분)','');
    Edit3.Text := ReadString('기본요금','기준 요금(원)','');
    Edit4.Text := ReadString('상세요금','주말 및 공휴일 기준 시간(분)','');
    Edit5.Text := ReadString('상세요금','주말 및 공휴일 기준 요금(원)','');
    Edit6.Text := ReadString('상세요금','일일 최대 요금(원)','');
    Edit7.Text := ReadString('상세요금','최대 요금(원)','');
    end;
    finally
    Ini.Free;
    end;//try
    end;


    위 처럼 하신 후, 각 폼의 OnCreate 이벤트에서
    CommonFormCreate(Self);
    로 호출 하시면 될것 같습니다..

    물론 아래의 함수도 마찬가지가 되겠죠.
  • Profile
    김만진 2008.06.25 02:42
    이정욱님의 조언은 정말 감사합니다. 그런데 제가 구현하고 싶은 것은 기존 폼에서는 체크박스를 사용해서 feeset.ini에 값을 저장했던 것들을
    데이타모듈에서는 함수를 만들어서 사용하고 싶습니다. 이때 체크박스를 사용하지 않고 변수로서 기존의 표현들을 feeset.ini에 저장하고 싶은 것입니다.
    이렇게 할수 있는 방법을 알려주셨으면 합니다.
    • 석주현
      2008.06.30 18:28
      TMediaPlayer Component는 컴포넌트 탭 "System"에 3번째 있습니다. 필름같은거 위에 음표 있는 거요. ...
    • 미닛메이드
      2008.07.01 00:29
      그럼 TMediaPlayer는 Mplayer Unit에 있는 Class군요 .. wavs.dcu 는 대체 어딨는거지 ㅡㅡ;
    • 미닛메이드
      2008.06.29 00:22
      procedure Paint(Canvas: TCanvas; const Device: TDeviceContext); virtual; //paint 함수 원형(Tdtp...
    • 임성길
    • 2008.06.28 00:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.06.26 06:47
      별거 없습니다. i32, f32, str, ptr이란 필드들이 하나의 메모리 공간을 공유해서 사용합니다. 때문에 ...
    • steps
    • 2008.06.25 22:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 민스맘
      2008.08.04 20:35
      애구....이것 저것 뒤지다 답을 찾았네요....혹시나 저처럼 필요한 분이 계실까 해서 답을 하고 갈께요 ...
    • 홍성락
      2008.06.25 05:23
      자료실에 [Vista에서 프로그램 권한상승하기...간단히 하긴 했는데...]의 예제 소스에서 사용저 권한을 ...
    • 이정욱
      2008.06.25 06:42
      불가능 합니다.. 그것이 가능하면 UAC의 의미가 없죠 ^^
    • 홍성락
      2008.06.25 18:21
      예. 그렇죠, 일단 사용자가 관리 권한이 있는 전제 조건하에서 위와같이 하면 일단 UAC로 묻지는 않을겁...
    • 이정욱
      2008.06.26 00:12
      헛.. 아닐텐데요.. 어떤것이던 관리자 권한이 필요한 부분은 물어보게 됩니다... 안물어보면.. 그부분은 ...
    • 홍성락
      2008.06.26 01:32
      예, UAC를 완전 극복(무능화)했다면 신문에 낫겠죠... 제가 해본것도 윈도우 시스템 폴더나 중대한건 ...
    • 신철우
      2008.06.27 20:01
      EXE 파일 또는 EXE파일이 들어있는 폴더의 속성 => 보안 => 편집 에서 "Authenticated User"를 선택하고 모...
    • 홍성락
      2008.06.27 20:12
      항상 텍스트 파일이나 RC파일 수정후엔 꼭 빌드해야 합니다...저는 되던데.... 안 뜬다는건 이정욱님 ...
    • 구창민
      2008.06.25 07:31
      안녕하세요.. 이런 형태로 해보세요.. if ACol = 3 and ARow = i then begin ...
    • 석주현
      2008.06.25 14:46
      전체적인 코드가 없어 모르겠지만 일단 위에 코드의 기본적인 스타일은 위에서 말씀해주신 형태로 고치시...
    • 천천히
      2008.06.25 19:53
      위에 같이 해도 글자색이 안변하네요.. for문으로 돌리니까 qty가 0도 있고 0이 아닌값도 있으니까 결...
    • 구창민
      2008.06.25 22:15
      DrawCell 이벤트 내의 코드를 모두 지우시고 아래 형태처럼 테스트 해보세요.. if ACol = 3 then if ...
    • 천천히
      2008.06.25 22:49
      답변 감사드립니다... ^^; 그런데 qyt 값이 0이면 글자색이 빨간색 0이 아니면 검은색인데... 조건 안...
    • 구창민
      2008.06.26 18:34
      천천히님.. DrawCell 이벤트는 말그대로 셀을 그릴때 발생되는이벤트인데, 안에서 for 문을 돌릴 이유가...
    • 김만진
    • 2008.06.25 01:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.25 02:23
      무슨 말씀이신지요..? 위의 이벤트 함수들을 공통으로 사용하고 싶으신건가요? 만약 그렇다면 위 이벤...
    • 김만진
      2008.06.25 02:42
      이정욱님의 조언은 정말 감사합니다. 그런데 제가 구현하고 싶은 것은 기존 폼에서는 체크박스를 사용해...
    • 박종학
    • 2008.06.25 00:12
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 박정순
      2008.06.25 00:33
      Memo1.Lines.Text := ZQuery2. SQL.Text ; 또는 Memo1.Lines := ZQuery2. SQL 이거 아닌가요?
    • 박종학
      2008.06.25 00:40
      감사합니다. 그런데.....ㅠㅠ...결과가 아래 처럼 나옵니다..... ------------------결과--------------...
    • 석주현
      2008.06.25 15:28
      찾아 봐도 바로 쿼리 파라메터가 변환된 결과가지고 오는 게 없네요. 그냥 구현해야 할 것 같네요. ...
    • 박종학
      2008.06.25 20:38
      감사합니다. 다시 해보겠습니다....^^.. 즐거운 하루되세요..
    • 이정욱
      2008.06.24 19:53
      정식으로 하시려면, 다운그레이드를 받으셔야 합니다. 2007구매를 하셨으면, 7으로 다운그레이드 신청을 ...
    • 석주현
      2008.06.24 20:44
      저도 프로젝트 때문에 C++ 빌더 6.0을 구입해야 하는데 정욱님 말씀처럼 해야 겠네요. ^^
    • 장성호
      2008.06.25 00:06
      제가 C++Builder 2007을 구매한후에 OOC 를 통해 C++Builder 6.0 라이센스를 받았습니다. 조건은 "이...
    • 석주현
      2008.06.24 07:53
      .net 용 델파이가 있긴 한데 그게 Window CE .Net에서 100% 돌아가는 지 모르겠습니다. 그냥 일반적인 W...
    • 이정욱
      2008.06.24 18:47
      .NET Compact Framework 를 지원하는 델파이가 나오면 가능합니다. 제가 듣기로는 현재 베타버전이 나와...
    • 곽영배
      2008.06.25 03:25
      답변 감사합니다.
    • steps
    • 2008.06.24 02:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.24 18:53
      먼저 TRectLayer를 클래스로만 선언을 하시고, 나중에 객체 구성을 하면 됩니다. TRectLayer = cl...
    • steps
      2008.06.24 20:44
      아는게 없다보니 가르켜주셔도 잘 모르겠군요. TRectLayer = class; TFrame2 = class(TFrame) ...
    • 이정욱
      2008.06.24 18:58
      위의 에러는 StoredProc 컴포넌트 자체레 파라미터가 정의 되어 있지 않아서 그렇습니다. 디자인 타임...
    • 임대순
    • 2008.06.23 20:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.24 19:00
      위의 쿼리가 잘 동작한다면, 쿼리문 문제이기 보다는.. 현재 사용하신 쿼리 컴포넌트의 사용에 문제가 있...
    • 임대순
      2008.06.24 23:44
      네 ..이정욱님.. 답변 감사드립니다. 문제점을 해결 했습니다. 쿼리 컴포넌트에 문제가 있었던게 아...
    • 윤성만
    • 2008.06.23 20:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.06.23 20:35
      음 도메인 네임 서버 그러니깐 DNS 에 등록되어 있지 않은 써버의 경우 당연히 그냥 이름으로 접근이 불...
    • 김재원
    • 2008.06.23 03:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.23 13:31
      웹호스팅 업체에서 미들웨어를 이용하고 있거나, 아니면 DB서버를 외부에 노출하지 않은 이상 불가능 합...
    • 김재원
      2008.06.23 22:01
      답변 감사합니다... 노출 되어 있는 웹 호스팅 업체가 있을까요? ^^;;