Q&A

  • 진짜 100% 초보라서 그런데요 이것좀 봐주세요
돌아가시기 일보직전에 글씁니다...



델파이 완전 생초짜라서 완전 개삽질한번 해볼라다가 머리에서 스팀이.....ㅡ.ㅡ;;;;



주차관리 소스 수정해볼려고 합니다



주차시간과 나간시간을 입력받아서 주차시간을 계산하는건데 문제는



주차시간이 입력되않아도  주차시간이 계산되길래 메시지 창하나 띄워서 메세지 보낼려고 하는게 생각인데

절대 안되내요 4시간동안 별쌩쑈를 다했는데 ㅡㅡ;;;;; 이 기분아시죠??



제~~~~~~~~~~~~~~~~발 해결 좀 간청드립니다....



코드는

<!--CodeS-->



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;


type

TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label1: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    Timer1timer: TTimer;
    procedure Edit3Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    EditTime1 : TDateTime;
    EditTime2 : TDateTime;
    EditTime3 : TDateTime;
    EditTime4 : TDateTime;



  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function DayBetween(Date1, Date2: TDateTime): integer;

var
   Day1, Day2 : TDateTime;

begin
   //Day1 := StrToDate( `2009-12-31` );
   //Day2 := StrToDate( `2009-11-30` );

   Day1 := StrToDate( FormatDateTime('YYYY-MM-DD', Date1) );
   Day2 := StrToDate( FormatDateTime('YYYY-MM-DD', Date2) );

   Result := integer( Trunc( Day1 - Day2 ));

   end;


procedure TForm1.Button1Click(Sender: TObject);

begin
     EditTime1  := Now;
  Edit1.Text := FormatDateTime('YYYY-MM-DD  HH:NN:SS', EditTime1);

end;
//begin

  // 들어온 시간
//  EditTime2  := EditTime1;
  //Edit2.Text := Edit1.Text;
//end;

procedure TForm1.Edit3Change(Sender: TObject);
begin

      edittime2 := edittime1;
      edit2.Text := edit1.text;

end;

procedure TForm1.Button2Click(Sender: TObject);
   begin

   // 나간 시간

  EditTime3  := now;
  Edit3.Text := FormatDateTime('yyyy-mm-dd HH:NN:SS', EditTime3);

// 주차한 시간

  EditTime4  := EditTime3 - EditTime2;
  Edit4.Text := FormatDateTime('HH:NN:SS', EditTime4);

// 날짜 차이

  Edit5.Text := IntToStr( DayBetween(EditTime3, EditTime2) );

end;



end.



<!--CodeE-->





입니다...





if edit2.text = '' then
   showmessage('들어온 시간을 입력해주세요')
   else



이런식으로 했는데 도통안되네요 ㅡ.ㅡ;;;;;; 그리고 값이 입력안됐을경우 메시지띄우고 다시 자료입력하게끔하는 방법을 알려주세요  



많은 델파이 고수들의 도움 지도 편달 부탁드립니다 (__)꾸벅;
3  COMMENTS
  • Profile
    치꼬 2009.08.12 06:21
    내용은 정확히 파악은 잘 안되지만요.
    위의 문장이 안되는건.. 말그대로 edit2.text 가 '' 것이 아니라는것이겠죠 ㅡㅡ;;;

    혹시... if trim(edit2.text) = '' then 으로 해보세요.
  • Profile
    구창민 2009.08.12 19:15
    안녕하세요..

    아래와 같은 문자열을 날짜로 치환하는 문장으로 해결하실수 있을거 같네요..

    if StrToDateTimeDef(Edit2.Text, 0) = 0 then
    DoSomething...

    참고로, Delphi 의 TDateTime 형은 하루를 1로 계산하고, 시작일인 0 은 '1899-12-30'로 시작한답니다.

    그럼 즐거운 프로그래밍 하세요..
  • Profile
    오델로 2009.08.12 19:38
    답변 무한감사드립니다^^;;

    아직 완전 백지상태라서 무작정 삽들고 파대기 시작하는중이라 답답합니다.

    앞으로도 종종 도와주시면 완전 초감사^^ 그럼 즐거운하루되세요
    • 이성찬
    • 2009.08.24 03:47
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2009.08.24 18:34
      안녕하세요.. 코드는 문제 없어보이는데.. 개발하시는 PC 의 OS 가 비스타가 아닌지요? 비스타의 경우...
    • 이성찬
      2009.08.26 06:22
      KDDG_MIN//답변 감사합니다. 하지만 윈도 xp sp3인걸요ㅠ
    • 구창민
      2009.08.26 22:19
      안녕하세요.. 제가 TurboDelphi 가 없어서 테스를 못해보았는데.. 정품으로 테스트시 Vista, XP 에서 ...
    • 이성찬
      2009.08.27 02:47
      KDDG_MIN//아, 여기서도 작동 잘 됩니다 ^^ 감사합니다. 아직 배우는중이라 이런면에서 좀 부족한듯 하네...
    • 박진수
    • 2009.08.21 23:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2009.08.23 09:22
      폴더에 대한 옵션이 많아서 그런가 봅니다. 비스타에선 기본적으로 폴더를 생성하면 [고급특성]에서 '...
    • 치꼬
      2009.08.22 02:51
      배우는 단계에서는 그닥 차이점은 중요하지 않을듯합니다.
    • 윤영훈
    • 2009.08.20 04:14
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2009.08.20 20:31
      ShowMessage대신에 MessageBox나 MessageDlg함수를 쓰세요...
    • 장성호
      2009.08.21 00:49
      //다음과 같이 만들어서.. procedure ShowMessageEx(const sTitle:String;const sMsg:String); b...
    • 성더기
      2009.08.22 02:32
      위에 방법도 있구요 델파이 메뉴의 프로젝트 > 프로젝트 옵션 > 프로그램 타이틀을 다른 바꾸시면...
    • 장성호
      2009.08.22 10:00
      Application 타이틀을 바꿔서도 가능하네요 다음과 같이 Application.Title을 변경해서도 구현이 가능...
    • 윤영훈
      2009.08.25 20:13
      감사합니다~ 한번씩 다 확인해고 제일 맞는 걸로 사용해야겠네요. 도움 주신 분들 정말정말 감사해요~
    • 최용일
      2009.08.18 18:43
      상용이구요... 아래 홈페이지에서 구매하실 수 있습니다. http://www.devart.com/dac.html
    • 조상은
      2009.08.18 19:25
      최용일님 정말 감사합니다. 알려주신 사이트 들어가서 보니 SQL에 직접 붙일 때 사용하는 컴포넌트이...
    • 조상은
      2009.08.18 20:12
      위의 글을 작성하다보니 install package에서 runtime packages 에 정의된 목록이 의심이 가서 다른 정상...
    • 문병구
    • 2009.08.15 00:11
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 백록화
      2009.08.15 09:16
      흠...보통 스캐너에서 바코드번호와 엔터값이 넘어옵니다. 따로 자릿수 처리를 할 필요가 없을껀데요.....
    • 아르스
      2009.08.18 00:15
      백록화 님의 말씀 처럼 OnKeyPress 나 OnKeyDown 이벤트에 if Key = #13 then begin ..... end; 또는 i...
    • 문병구
      2009.08.18 01:21
      맞네요..제가 착각을 했네요... 바코드 값이 읽어지는 것은 마치 키보드에 값을 넣고 모두 넣은 다음 엔...
    • 김동원
    • 2009.08.14 18:55
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2009.08.15 02:41
      안녕하세요.. 우선 그 네개의 TMemo 콘트롤의 크기가 동일하다는 가정하에 아래 예제를 따라해보세요....
    • 김동원
      2009.08.15 22:27
      초보가 이해하긴 대단히 어려운 내용같습니다.. 하여간, 좋은 답변주신데 대해 , 저의 감사의 마음을 ...
    • 구창민
      2009.08.17 19:09
      조금 설명을 달아 보겠습니다.. 음.. FOldMemoWndProc 는 함수포인터라고 하는건데.. 일종의 변수라고...
    • 김동원
      2009.08.19 02:08
      어렴풋이 이해할수있게되었습니다. 정말 감사합니다.그런데 실제로 코드를 입력해보니 아래와 같은 오류...
    • 구창민
      2009.08.19 18:25
      동원님.. 위에러만 봐서는 상황을 알 수 없고요... 에러나는 부분의 함수부분만이라도 떼서 올려보세요....
    • 김동원
      2009.08.21 01:03
      님께서 올려주신대로 새로 코드를 써서 만들었더니 잘 됩니다. 그런데 문제는 다른데 있었던것 같습니다. ...
    • cdrd
    • 2009.08.13 20:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김동원
      2009.08.14 18:24
      위 질문중 1번에서 ADO,BDE 두가지만 말씀드릴수 있습니다. 제가 경험한 것이 이것 뿐이라서요.(저는 초...
    • 현실환
      2009.08.18 21:16
      Antialiased Drawing을 할려면 GDI가 아닌 GDI+ 함수를 이용해야 합니다. 컴포넌트 자체는 TImage를 그...
    • 오델로
    • 2009.08.12 19:50
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김병윤
      2009.08.12 21:28
      10분에 천원이면...한시간에 6천원...하루에 14만4천원? 뜨억 @.@;; ㅋㅋ 설마 이렇게 많이 받지는 않겠죠...
    • 오델로
      2009.08.12 22:54
      아 완전 깔끔한 한방이네요 ㅠ.ㅠ 완전 감솨*10000000000000000000 소중하게 보겠습니다... Edit6....
    • 김병윤
      2009.08.13 01:46
      Format에 관해서 따로 알아두시는게 좋으실텐데 여기다 다 설명드리기는 좀 그렇고 대략...설명하자면 ...
    • 오델로
      2009.08.19 18:24
      이제서야 답변봤네요^^ 유용한 답변 감사합니다...^^ 복사해서 따로 저장후에 써야겠네요 ㅋ즐거운 하루...
    • 이훈
    • 2009.08.12 08:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2009.08.12 18:45
      코드를 올려보세요..
    • 김병윤
      2009.08.12 21:37
      폼.Hide 때문입니다. 번쩍하고 사라지지 않습니까? 폼.Show; 로 폼을 호출하면 그 아래 코드까지 일사...
    • 구창민
      2009.08.12 20:49
      아래 코드 한줄을 추가해 보세요.. Application.ProcessMessages; fmInfoProgress.Show; 즐거운 ...
    • 김병윤
      2009.08.12 22:15
      Application.ProcessMessages; 요놈이 루프 안에 있어야 원하시는 결과를 얻으실 수 있을 듯 합니다. ^^
    • Hyphen
      2009.08.12 22:56
      fmInfoProgress.Show; Application.ProcessMessages; 순서를 이렇게 하니까 보이는 군요.. 대단히 ...
    • 오델로
    • 2009.08.12 04:13
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 치꼬
      2009.08.12 06:21
      내용은 정확히 파악은 잘 안되지만요. 위의 문장이 안되는건.. 말그대로 edit2.text 가 '' 것이 아니라...
    • 구창민
      2009.08.12 19:15
      안녕하세요.. 아래와 같은 문자열을 날짜로 치환하는 문장으로 해결하실수 있을거 같네요.. if Str...
    • 오델로
      2009.08.12 19:38
      답변 무한감사드립니다^^;; 아직 완전 백지상태라서 무작정 삽들고 파대기 시작하는중이라 답답합니다...
    • 백록화
      2009.08.11 21:32
      리더기가 시리얼통신을 사용한다면 관련 시리얼통신 콤포넌트에 데이터읽기 이벤트에서 제어를 해주심돼...
    • KDDG_Apine
      2009.08.12 04:12
      밑에 같이 id 컴포넌트를 사용하면 됩니다. ^^ 제가 사용했던부분인데.. 될겁니다. var nDate,...
    • 김지호
      2009.08.24 18:27
      답변 감사합니다 ^^