Q&A

  • 왜 창이 닫히지 않죠..에러좀 봐주셔여..오빠들*^^*
unit L_Pamt;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Db, DBTables, Grids, DBGrids, ExtCtrls, ShellAPI, Menus, isp3,

Registry, OleCtrls, FileCtrl, inifiles;



type

TPamt = class(TForm)

Panel1: TPanel;

Label1: TLabel;

Label2: TLabel;

Edip: TEdit;

Edhome: TEdit;

procedure FormCreate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action : TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Pamt: TPamt;



implementation



{$R *.DFM}

procedure TPamt.FormCreate(Sender: TObject);

var

process:string;

commandbuf: array[0..300] of Char;

parambuf: array[0..300] of Char;

senddata: string;

IPini: Tinifile;

// FP : Textfile;

begin

IPini :=Tinifile.Create(ExtractFilePath(Application.ExeName)+'portmis.ini');

Edip.Text := IPini.ReadString('IP정보','IP','');

Edhome.Text := IPini.ReadString('IP정보','HOME','');

IPini.Free;

try

process := Edhome.Text +'JJOEFPUT_COMMUNI';

senddata := Edip.Text + '15564' + 'C:TC201PL'+ FormatDateTime('YYYYMM',now)+ '.DAT';

StrPCopy(commandbuf, process);

StrPCopy(parambuf, senddata);

ShellExeCute(0, nil, commandbuf, parambuf, nil, SW_SHOW);

PostMessage(Handle, WM_CLOSE, 0, 0);

except

MessageBeep(0);

PostMessage(Handle, WM_CLOSE, 0, 0);

end;

end;

procedure TPamt.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Close;

end;



end.



컴파일 에러는 없거든여..

근데 실행하면 창이 닫히질 않는거 있죠..분면 PostMessage(Handle, WM_CLOSE, 0,0)

을 썼는데두 안되는거 있죠..

그리고여 Edip.Text와 Edhome.Text에 portmis.ini에 있는 텍스트화일을 읽어오지 못하거든여..

실행화일 밑에 넣어두었는데 읽어오지 못하는 이유는 뭐에여...다시해두 안되는거 있죠..꼭 좀 해결좀 해주셔여...고수 오빠들....*^^*

6  COMMENTS
  • Profile
    허접한 2001.10.26 11:48
    ShellExeCute 에서 오픈한거의 handle 값은 어디에다가 되돌려 줬죠?

    PoseMessage의 방식은 맞는데 어데로 메세지를 보내야 될지 몰라서 그래염.

    이부분 수정하시구염. 파일 읽어 오지 못하는 부분은... 쩝...

    저두 허접합니다만... 이런 코딩은 돌아 가는 코딩 맞습니까 ? 처음부터

    천천히
  • Profile
    바다를향해 2001.10.20 04:07
    냠냠.....올만에 글을 올리는 군여....

    아주 간단히 설명을 해보자면.......

    폼을 create하고 바로 close를 하셨는데.......

    이건 잘못된거라고 생각이 되네여....

    왜냐면......create와 짝을 이루는건 destroy져...

    글구 show와 짝을 이루는 것이 close이구여

    그렇다면 다시 정리를 하자면

    create -> show 순으로 폼을 생성 시키고

    close -> destroy 순으로 폼을 없애 버리는 거에여....

    다시 말해 show를 하지도 않고 어떻게 close를 할수 있느냐는 거져....^^;;;;



    FormActivate 이벤트에 밑에 코드를 넣어 보세여.....그럼 되겠쪄...냠냠...

    그럼 전 이만.....즐코....



    수정이^^ wrote:

    > unit L_Pamt;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > StdCtrls, Db, DBTables, Grids, DBGrids, ExtCtrls, ShellAPI, Menus, isp3,

    > Registry, OleCtrls, FileCtrl, inifiles;

    >

    > type

    > TPamt = class(TForm)

    > Panel1: TPanel;

    > Label1: TLabel;

    > Label2: TLabel;

    > Edip: TEdit;

    > Edhome: TEdit;

    > procedure FormCreate(Sender: TObject);

    > procedure FormClose(Sender: TObject; var Action : TCloseAction);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Pamt: TPamt;

    >

    > implementation

    >

    > {$R *.DFM}

    > procedure TPamt.FormCreate(Sender: TObject);

    > var

    > process:string;

    > commandbuf: array[0..300] of Char;

    > parambuf: array[0..300] of Char;

    > senddata: string;

    > IPini: Tinifile;

    > // FP : Textfile;

    > begin

    > IPini :=Tinifile.Create(ExtractFilePath(Application.ExeName)+'portmis.ini');

    > Edip.Text := IPini.ReadString('IP정보','IP','');

    > Edhome.Text := IPini.ReadString('IP정보','HOME','');

    > IPini.Free;

    > try

    > process := Edhome.Text +'JJOEFPUT_COMMUNI';

    > senddata := Edip.Text + '15564' + 'C:TC201PL'+ FormatDateTime('YYYYMM',now)+ '.DAT';

    > StrPCopy(commandbuf, process);

    > StrPCopy(parambuf, senddata);

    > ShellExeCute(0, nil, commandbuf, parambuf, nil, SW_SHOW);

    > PostMessage(Handle, WM_CLOSE, 0, 0);

    > except

    > MessageBeep(0);

    > PostMessage(Handle, WM_CLOSE, 0, 0);

    > end;

    > end;

    > procedure TPamt.FormClose(Sender: TObject; var Action: TCloseAction);

    > begin

    > Close;

    > end;

    >

    > end.

    >

    > 컴파일 에러는 없거든여..

    > 근데 실행하면 창이 닫히질 않는거 있죠..분면 PostMessage(Handle, WM_CLOSE, 0,0)

    > 을 썼는데두 안되는거 있죠..

    > 그리고여 Edip.Text와 Edhome.Text에 portmis.ini에 있는 텍스트화일을 읽어오지 못하거든여..

    > 실행화일 밑에 넣어두었는데 읽어오지 못하는 이유는 뭐에여...다시해두 안되는거 있죠..꼭 좀 해결좀 해주셔여...고수 오빠들....*^^*

  • Profile
    바부이니 2001.10.20 00:44
    안냐세염 바부이니랍니다.

    제가 함 봤거든여.

    근데 저두 초보라서...^^;



    PostMessage(Handle, WM_CLOSE, 0, 0);

    로 창을 닫네여?

    근데 close가 또 있으니...이럴때 에러가 날지두 모릅니다.

    아마 날껍니다.

    나머진 별 문제가 없는데...

    혹시 INI안에

    [IP정보]

    IP= 98.192.0.1

    HOME= 98.192.0.3

    이렇게 값이 있어야 되겠져? 없으면 ''값이 에딧박스안에 들어오겠져



    process := Edhome.Text +'JJOEFPUT_COMMUNI';

    senddata := Edip.Text + '15564' + 'C:TC201PL'+ FormatDateTime('YYYYMM',now)+ '.DAT';

    StrPCopy(commandbuf, process);

    StrPCopy(parambuf, senddata);

    ShellExeCute(0, nil, commandbuf, parambuf, nil, SW_SHOW);





    제가 궁금한거 이게 머하는 프로그램인가 이거랍니다.

    멀 실행을 시키는거지??



    암튼 process,senddata에 들어갈 값이 저런 값이 맞다면 제 생각엔 이상은 없는듯...





  • Profile
    사발우성 2001.10.19 23:19
    초보 사발임돠~

    일단.. 폼 close이벤트에 close가있군엽 -_- 삭제하시길...

    삭제했는데구 폼이 안닫기면 ^^ application.Terminate; 이넘을

    써보시길.. 확실히 주겨줌다 ㅋㅋㅋㅋ

    글구 ini파일이 있긴 한건가엽???

    소스는 별이상이 없는듯 ^^;;

    아님 파일은 있는데 경로 지정이 잘못되어 있던지엽 ^^

    그럼 즐프엽...



    수정이^^ wrote:

    > unit L_Pamt;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > StdCtrls, Db, DBTables, Grids, DBGrids, ExtCtrls, ShellAPI, Menus, isp3,

    > Registry, OleCtrls, FileCtrl, inifiles;

    >

    > type

    > TPamt = class(TForm)

    > Panel1: TPanel;

    > Label1: TLabel;

    > Label2: TLabel;

    > Edip: TEdit;

    > Edhome: TEdit;

    > procedure FormCreate(Sender: TObject);

    > procedure FormClose(Sender: TObject; var Action : TCloseAction);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Pamt: TPamt;

    >

    > implementation

    >

    > {$R *.DFM}

    > procedure TPamt.FormCreate(Sender: TObject);

    > var

    > process:string;

    > commandbuf: array[0..300] of Char;

    > parambuf: array[0..300] of Char;

    > senddata: string;

    > IPini: Tinifile;

    > // FP : Textfile;

    > begin

    > IPini :=Tinifile.Create(ExtractFilePath(Application.ExeName)+'portmis.ini');

    > Edip.Text := IPini.ReadString('IP정보','IP','');

    > Edhome.Text := IPini.ReadString('IP정보','HOME','');

    > IPini.Free;

    > try

    > process := Edhome.Text +'JJOEFPUT_COMMUNI';

    > senddata := Edip.Text + '15564' + 'C:TC201PL'+ FormatDateTime('YYYYMM',now)+ '.DAT';

    > StrPCopy(commandbuf, process);

    > StrPCopy(parambuf, senddata);

    > ShellExeCute(0, nil, commandbuf, parambuf, nil, SW_SHOW);

    > PostMessage(Handle, WM_CLOSE, 0, 0);

    > except

    > MessageBeep(0);

    > PostMessage(Handle, WM_CLOSE, 0, 0);

    > end;

    > end;

    > procedure TPamt.FormClose(Sender: TObject; var Action: TCloseAction);

    > begin

    > Close;

    > end;

    >

    > end.

    >

    > 컴파일 에러는 없거든여..

    > 근데 실행하면 창이 닫히질 않는거 있죠..분면 PostMessage(Handle, WM_CLOSE, 0,0)

    > 을 썼는데두 안되는거 있죠..

    > 그리고여 Edip.Text와 Edhome.Text에 portmis.ini에 있는 텍스트화일을 읽어오지 못하거든여..

    > 실행화일 밑에 넣어두었는데 읽어오지 못하는 이유는 뭐에여...다시해두 안되는거 있죠..꼭 좀 해결좀 해주셔여...고수 오빠들....*^^*

  • Profile
    죠스고기 2001.11.10 07:00


    Application.ProcessMessages; 라고 코딩해보세요.

    그 후에 폼을 닫던가 하시구요.

    ini파일은 절대경로를 한번 넣어보세요.

    뭐 틀린건 없는 것 같은데 혹시 다를 수도 있으니....



    그리고 연결이 되지 않았을 경우에는

    If xxx.State <> prcConnected then exit;

    이건 form activate 에 코딩해보세요.

    저도 초보라 잘은 몰르거든요.

    좋은 하루 되시길...........

  • Profile
    수정이^^ 2001.10.19 20:54
    이건 실행시키면 portmis.ini의 텍스트화일을 불러와서 ip읽어서 데이타를

    전송한뒤 자동으로 창이 닫히거든여...

    근데 portmis.ini 텍스트 화일두 못읽고 창이 자동으로 닫히지도 않거든여..

    플리즈..

    고수 오빠들 다 어디간거에여....플리즈...

    벌써 점심 먹으러 간건 아니죠...