Q&A

  • 어떻게 해야 하는지...프로세스간 통신,
제가 어떻게 설명해야 할지도 잘 모르겠지만.. 제가 질문하는 게 타당하다면

좀 설명해주세요..

프로세스간 통신은 어떻게 해야할지..

서로 다른 프로그램간의 메세지를 주고 받을려고 하는데 비동기적으로 구동을 하고 싶습니다.

중간파일을 만들어 전송하면 되겠지만 이것은 파일을 생성해야 한다는 번거로움이 있잖아요. 프로세스간 메세지 전송만으로 데이타를 전송하고 싶은데 어떻게 해야 할까요? 엉아들 샌님들 동상님들 도움주세요.

3  COMMENTS
  • Profile
    송동일 1999.04.29 18:55
    안녕들 하신가요?

    어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다.

    공식이 영구적이라면 프로그램 코드에 함수로 만들어 놓겠는데...

    수정가능성이 있는거라서...



    위와같은 공식을 프로그램 수행중에 변경할 수 있는 방법이 있나요?

    공식은 a=b+c 나 a=b*c+d등 여러가지가 될수 있어요...



    참고로 db는 오라클을 쓰고 있습니다.



    질문이 너무 초보적인가요? 그래도 좀...



    그럼 오늘도 즐거운 코딩되시길...



  • Profile
    안치봉 1999.07.10 20:32
    안녕하세요.



    여러가지 방법이 있겠죠...



    맞는지는 모르겠지만... 그리 큰 데이타가 아니라면 저 같은 경우에는



    WM_COPYDATA 를 사용합니다.



    자세한건 Win32 API 도움말을 참고하십시오.



    성병규 께서 말씀하시기를...

    > 제가 어떻게 설명해야 할지도 잘 모르겠지만.. 제가 질문하는 게 타당하다면

    > 좀 설명해주세요..

    > 프로세스간 통신은 어떻게 해야할지..

    > 서로 다른 프로그램간의 메세지를 주고 받을려고 하는데 비동기적으로 구동을 하고 싶습니다.

    > 중간파일을 만들어 전송하면 되겠지만 이것은 파일을 생성해야 한다는 번거로움이 있잖아요. 프로세스간 메세지 전송만으로 데이타를 전송하고 싶은데 어떻게 해야 할까요? 엉아들 샌님들 동상님들 도움주세요.





  • Profile
    김영대 1999.04.29 19:14
    송동일 wrote:

    > 안녕들 하신가요?

    > 어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다.

    > 공식이 영구적이라면 프로그램 코드에 함수로 만들어 놓겠는데...

    > 수정가능성이 있는거라서...

    >

    > 위와같은 공식을 프로그램 수행중에 변경할 수 있는 방법이 있나요?

    > 공식은 a=b+c 나 a=b*c+d등 여러가지가 될수 있어요...

    >

    > 참고로 db는 오라클을 쓰고 있습니다.

    > 질문이 너무 초보적인가요? 그래도 좀...

    > 그럼 오늘도 즐거운 코딩되시길...



    문자열 수식문장(expression)의 결과 구하기

    안녕하세요 김영대입니다

    아래 소스는 전에 제 홈페이지의 Delphi Tip & Trick 에 올렸던

    예제인데 정확한 해답은 아니지만 조금만 수정하면 원하시는 결과를

    얻을 수 있을것 같아서 올립니다



    아래 예제는 화면의 Edit1의 Text에 sqrt(43.23*12+3.1/1.64) 등등의 임의의

    수식을 입력하고 버튼을 클릭하면 그 결과를 계산해서 보여주고 만약 잘못된

    수식이면 에러난 문자로 캐럿을 이동시킵니다



    이 소스를 보시고

    sqrt(43.23*12+3.1/1.64) -> sqrt(a*b+c/d) 이런 식으로 입력하고

    해당 변수(a,b,c,d)에 값을 넣은 식으로 바꾸시면 될 듯 합니다





    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    Tform1 = class(Tform)

    Edit1: TEdit;

    Button1: TButton;

    Label1: TLabel;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    form1: Tform1;



    implementation

    {$R *.DFM}



    procedure Eval(formula: String; {Expression to be evaluated}

    var Value: double; {Return value}

    var ErrPos: Integer); {error position}

    const

    Digit: Set of Char = ['0'..'9'];

    var

    Posn: Integer; {Current position in formula}

    CurrChar: Char; {character at Posn in formula}



    procedure ParseNext;

    begin

    repeat

    Posn := Posn+1;

    if Posn <= Length(formula) then

    CurrChar := formula[Posn]

    else

    CurrChar := ^M;

    until CurrChar<>' ';

    end {ParseNext};



    function add_subt: Real;

    var

    E: Real;

    Opr: Char;



    function mult_DIV: Real;

    var

    S : Real;

    Opr : Char;



    function Power: Real;

    var

    T : Real;



    function Signedop: Real;



    function Unsignedop: Real;

    type

    StdFunc = (fabs, fsqrt, fsqr, fsin, fcos,

    farctan, fln, flog, fexp, ffact);

    StdFuncList = array[StdFunc] of String[6];



    const

    StdFuncName: StdFuncList =

    ('ABS','SQRT','SQR','SIN','COS',

    'ARCTAN','LN','LOG','EXP','FACT');

    var

    E, L, Start : Integer;

    Funnet : Boolean;

    F : Real;

    Sf : StdFunc;



    function Fact(I: Integer): Real;

    begin

    if I > 0 then

    begin

    Fact := I*Fact(I-1);

    end

    else

    Fact := 1;

    end {Fact};



    begin {function Unsignedop}

    if CurrChar in Digit then

    begin

    Start := Posn;

    repeat

    ParseNext

    until not (CurrChar in Digit);

    if CurrChar = '.' then

    repeat

    ParseNext

    until not (CurrChar in Digit);

    if CurrChar = 'E' then

    begin

    ParseNext;

    repeat

    ParseNext

    until not (CurrChar in Digit);

    end;

    Val(Copy(formula,Start,Posn-Start),F,ErrPos);

    end

    else if CurrChar = '(' then

    begin

    ParseNext;

    F := add_subt;

    if CurrChar=')' then

    ParseNext

    else

    ErrPos := Posn;

    end

    else

    begin

    Funnet := False;

    for sf := fabs tO ffact do

    if not Funnet then

    begin

    l := Length(StdFuncName[sf]);

    if Copy(formula,Posn,l)=StdFuncName[sf] then

    begin

    Posn := Posn+l-1;

    ParseNext;

    f := Unsignedop;

    case sf of

    fabs: f := abs(f);

    fsqrt: f := SqrT(f);

    fsqr: f := Sqr(f);

    fsin: f := Sin(f);

    fcos: f := Cos(f);

    farctan: f := ArcTan(f);

    fln : f := LN(f);

    flog: f := LN(f)/LN(10);

    fexp: f := EXP(f);

    ffact: f := fact(Trunc(f));

    end;

    Funnet := True;

    end;

    end;

    if not Funnet then

    begin

    ErrPos := Posn;

    f := 0;

    end;

    end;

    Unsignedop := F;

    end {Unsignedop};



    begin {Signedop}

    if CurrChar='-' then

    begin

    ParseNext;

    Signedop := -Unsignedop;

    end

    else

    Signedop := Unsignedop;

    end {Signedop};



    begin {Power}

    T := Signedop;

    while CurrChar='^' do

    begin

    ParseNext;

    if t <> 0 then

    t := EXP(LN(abs(t))*Signedop)

    else

    t := 0;

    end;

    Power := t;

    end {Power};



    begin {mult_DIV}

    s := Power;

    while CurrChar in ['*','/'] do

    begin

    Opr := CurrChar;

    ParseNext;

    case Opr of

    '*': s := s * Power;

    '/': s := s / Power;

    end;

    end;

    mult_DIV := s;

    end {mult_DIV};



    begin {add_subt}

    E := mult_DIV;

    while CurrChar in ['+','-'] do

    begin

    Opr := CurrChar;

    ParseNext;

    case Opr of

    '+': e := e + mult_DIV;

    '-': e := e - mult_DIV;

    end;

    end;

    add_subt := E;

    end {add_subt};



    begin {PROC Eval}

    if formula[1] = '.' then

    formula := '0' + formula;

    if formula[1]='+' then

    Delete(formula,1,1);

    for Posn:=1 to Length(formula) do

    formula[Posn] := Upcase(formula[Posn]);

    Posn := 0;

    ParseNext;

    Value := add_subt;

    if CurrChar=^M then

    ErrPos := 0

    else

    ErrPos := Posn;

    end {PROC Eval};



    procedure Tform1.Button1Click(Sender: TObject);

    var

    Value: double;

    ErrPos: Integer;

    begin

    Eval(Edit1.Text, Value, ErrPos);

    Label1.Caption := FloatToStr(Value); // 결과값



    if ErrPos > 0 then // 에러가 있다면 해당 문자로 캐럿을 위치 시킨다

    begin

    Edit1.SetFocus;

    {두번째 문자 위치로 커서를 보낸대}

    Edit1.SelStart := ErrPos - 1;

    {문자를 선택하지 않은 상태로 만든다}

    Edit1.SelLength := 0;

    end;

    end;



    end.



    • 강민정
    • 1999.04.29 20:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • rain
      1999.04.30 02:09
      Form만 불러오는 소스를 가지고는 어떤 에러인지는 정확히 모르겠습니다. 물론 모든 소스를 보여달라는 것...
    • 이상주
    • 1999.07.10 22:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정정례
      1999.04.29 19:35
      가상Key번호 중에서 PageUp과 PageDown번호를 알려주세요
    • 신인재
      1999.04.29 19:44
      정정례 wrote: > 가상Key번호 중에서 PageUp과 PageDown번호를 알려주세요 천랸 PDSPF에서 퍼 왔습니다...
    • 이창남
      1999.07.10 22:28
      DBGrid에 직접 데이터 입력할 경우.. Post가 일어나기 전에 특정 컬럼의 값을 체크하려고 합니다.. Dat...
    • 안치봉
      1999.04.29 19:36
      장 아무개 wrote: > 답변중에 > 집합형이라고 하셨는데 > printer_DBGrid.Options.dgRowLines := true ...
    • 정정례
      1999.04.29 19:35
      가상Key번호 중에서 PageUp과 PageDown번호를 알려주세요
    • 신인재
      1999.04.29 19:44
      정정례 wrote: > 가상Key번호 중에서 PageUp과 PageDown번호를 알려주세요 천랸 PDSPF에서 퍼 왔습니다...
    • Kinjecs
    • 1999.07.10 20:31
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 송동일
      1999.04.29 18:55
      안녕들 하신가요? 어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다. 공식이 영구적이라면 프...
    • 나노시스
      1999.07.14 00:22
      Kinjecs 께서 말씀하시기를... > 한컴퓨터에 어느 한 DB 가 있습니다... > lan으로 연결된 다른컴퓨터들...
    • 김영대
      1999.04.29 19:14
      송동일 wrote: > 안녕들 하신가요? > 어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다. > ...
    • 성병규
    • 1999.07.10 19:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 송동일
      1999.04.29 18:55
      안녕들 하신가요? 어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다. 공식이 영구적이라면 프...
    • 안치봉
      1999.07.10 20:32
      안녕하세요. 여러가지 방법이 있겠죠... 맞는지는 모르겠지만... 그리 큰 데이타가 아니라면 저 같은...
    • 김영대
      1999.04.29 19:14
      송동일 wrote: > 안녕들 하신가요? > 어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다. > ...
    • 김봉재
    • 1999.04.29 18:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.29 22:15
      잠깐 Command프롬프트로 가셔서 그 BORDBP40.DLL이 있는 디렉토리로 이동하신 후에 Regsvr32 BORDBK40.DLL ...
    • 강경중
    • 1999.07.10 15:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정재홍
      1999.07.10 18:24
      강경중 께서 말씀하시기를... > 아래에 있는 내용을 사용했는데요... > with QRCompositeReport1 do > b...
    • 이누리
    • 1999.04.29 18:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • mephy
      1999.04.29 22:31
      이누리 wrote: > 안녕하세요 > > 각 Form 에서 SelectNext 를 사용한 경우 Error 가 나지 않았는데 > ...
    • 최석기
      1999.07.10 17:45
      최혁진 께서 말씀하시기를... > 특정 데이터베이스 파일내에 존재하는 테이블들의 리스트를 델파이 프로그...
    • 안치봉
      1999.04.29 19:36
      장 아무개 wrote: > 답변중에 > 집합형이라고 하셨는데 > printer_DBGrid.Options.dgRowLines := true ...
    • 궁금이
    • 1999.07.10 04:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.07.10 20:23
      안녕하세요. 제가 만든 간단한 콤포넌트가 있는데 한델 자료실에 올려드리죠^^; 궁금이 께서 말씀하...
    • 이호선
      1999.04.29 06:02
      안녕하세요. 별다른 것은 없고요 현재 설정된 기본 프린트를 바꿀려하는데 바꿔도 이전설정된 프린트장치...
    • 이정욱
      1999.07.10 20:44
      통상적인것이라기 보다는 제가 사용하는 방법을 말씀드리죠. 전 Component라는 디렉토리를 따로 루트디렉...
    • 이정욱
      1999.04.29 21:53
      제가 만든 기본프린터 바꾸는 함수 입니다. 참고하시구요... 이것은 프린터 이름의 일부만 넣어줘도 됩니...
    • 안치봉
      1999.04.29 07:10
      이호선 wrote: > 안녕하세요. > 별다른 것은 없고요 현재 설정된 기본 프린트를 바꿀려하는데 바꿔도 > ...
    • 이호선
    • 1999.04.29 06:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장일형
      1999.07.10 03:54
      델파이로 특정 디렉토리를 지우지 못하게 하고 그 디렉토리에 있는 파일을 볼 수 없도록 할 수 있나요? P...
    • 안치봉
      1999.04.29 07:03
      이호선 wrote: > 안녕하세요. > Drag&Drop내용이 델파이 강의에 있다하는데 어디인지 못찾겠는데요. > ...
    • 이호선
    • 1999.04.29 06:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.29 07:03
      이호선 wrote: > 안녕하세요. > Drag&Drop내용이 델파이 강의에 있다하는데 어디인지 못찾겠는데요. > ...
    • 구창민
      1999.07.10 12:01
      Termy 께서 말씀하시기를... > 소켓통신으로 다른 컴퓨터에 파일전송하고 저장하고 싶은데 > 소켓으로 파...
    • 김종환
      1999.07.13 06:09
      구창민 께서 말씀하시기를... > Termy 께서 말씀하시기를... > > 소켓통신으로 다른 컴퓨터에 파일전송하...
    • 구창민
      1999.07.13 08:30
      김종환 께서 말씀하시기를... > 구창민 께서 말씀하시기를... > > Termy 께서 말씀하시기를... > > > 소...
    • 김종환
      1999.07.13 13:41
      > 김종환님 구창민입니다. > 죄송합니다. 게시판의 번호가 변하는 줄 몰랐었습니다. > 아래를 주소를 복...