Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
어떻게 해야 하는지...프로세스간 통신,
제가 어떻게 설명해야 할지도 잘 모르겠지만.. 제가 질문하는 게 타당하다면
좀 설명해주세요..
프로세스간 통신은 어떻게 해야할지..
서로 다른 프로그램간의 메세지를 주고 받을려고 하는데 비동기적으로 구동을 하고 싶습니다.
중간파일을 만들어 전송하면 되겠지만 이것은 파일을 생성해야 한다는 번거로움이 있잖아요. 프로세스간 메세지 전송만으로 데이타를 전송하고 싶은데 어떻게 해야 할까요? 엉아들 샌님들 동상님들 도움주세요.
3
COMMENTS
송동일
•
1999.04.29 18:55
안녕들 하신가요?
어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다.
공식이 영구적이라면 프로그램 코드에 함수로 만들어 놓겠는데...
수정가능성이 있는거라서...
위와같은 공식을 프로그램 수행중에 변경할 수 있는 방법이 있나요?
공식은 a=b+c 나 a=b*c+d등 여러가지가 될수 있어요...
참고로 db는 오라클을 쓰고 있습니다.
질문이 너무 초보적인가요? 그래도 좀...
그럼 오늘도 즐거운 코딩되시길...
0
0
삭제
수정
댓글
안치봉
•
1999.07.10 20:32
안녕하세요.
여러가지 방법이 있겠죠...
맞는지는 모르겠지만... 그리 큰 데이타가 아니라면 저 같은 경우에는
WM_COPYDATA 를 사용합니다.
자세한건 Win32 API 도움말을 참고하십시오.
성병규 께서 말씀하시기를...
> 제가 어떻게 설명해야 할지도 잘 모르겠지만.. 제가 질문하는 게 타당하다면
> 좀 설명해주세요..
> 프로세스간 통신은 어떻게 해야할지..
> 서로 다른 프로그램간의 메세지를 주고 받을려고 하는데 비동기적으로 구동을 하고 싶습니다.
> 중간파일을 만들어 전송하면 되겠지만 이것은 파일을 생성해야 한다는 번거로움이 있잖아요. 프로세스간 메세지 전송만으로 데이타를 전송하고 싶은데 어떻게 해야 할까요? 엉아들 샌님들 동상님들 도움주세요.
0
0
삭제
수정
댓글
김영대
•
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.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
강민정
•
1999.04.29 20:45
1
COMMENTS
/
0
LIKES
에러가 났는데 이유를 모르겠어요.
rain
•
1999.04.30 02:09
Form만 불러오는 소스를 가지고는 어떤 에러인지는 정확히 모르겠습니다. 물론 모든 소스를 보여달라는 것...
델초보
1999.07.11 00:16
0
COMMENTS
/
0
LIKES
가르침을 받기를 원합니다.
이상주
•
1999.07.10 22:53
2
COMMENTS
/
0
LIKES
델파이3에서 4로의 업그레이드
정정례
•
1999.04.29 19:35
가상Key번호 중에서 PageUp과 PageDown번호를 알려주세요
신인재
•
1999.04.29 19:44
정정례 wrote: > 가상Key번호 중에서 PageUp과 PageDown번호를 알려주세요 천랸 PDSPF에서 퍼 왔습니다...
장 아무개
•
1999.04.29 10:47
2
COMMENTS
/
0
LIKES
824번 재질문- true가 아니라 false 일때는요?
이창남
•
1999.07.10 22:28
DBGrid에 직접 데이터 입력할 경우.. Post가 일어나기 전에 특정 컬럼의 값을 체크하려고 합니다.. Dat...
안치봉
•
1999.04.29 19:36
장 아무개 wrote: > 답변중에 > 집합형이라고 하셨는데 > printer_DBGrid.Options.dgRowLines := true ...
이명학
1999.07.10 21:18
0
COMMENTS
/
0
LIKES
[급] 퀵리포트의 이미지 그리기
황보호
•
1999.07.10 21:11
2
COMMENTS
/
0
LIKES
4.0에서 컴포넌트 추가 방법 좀 가르쳐 주세요.
정정례
•
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
**[긴급질문]** DB를 공유해서 쓸때...
송동일
•
1999.04.29 18:55
안녕들 하신가요? 어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다. 공식이 영구적이라면 프...
나노시스
•
1999.07.14 00:22
Kinjecs 께서 말씀하시기를... > 한컴퓨터에 어느 한 DB 가 있습니다... > lan으로 연결된 다른컴퓨터들...
김영대
•
1999.04.29 19:14
송동일 wrote: > 안녕들 하신가요? > 어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다. > ...
장 아무개
1999.04.29 19:08
0
COMMENTS
/
0
LIKES
[824번에 대한 재질문] Add watch에 대해서?
이은주
1999.07.10 19:47
0
COMMENTS
/
0
LIKES
toolbar의 image가 나타나지 않는 경우는?
성병규
•
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
공통 Pas 에서 사용하는 SelectNext 함수..
mephy
•
1999.04.29 22:31
이누리 wrote: > 안녕하세요 > > 각 Form 에서 SelectNext 를 사용한 경우 Error 가 나지 않았는데 > ...
최혁진
•
1999.07.10 06:05
1
COMMENTS
/
0
LIKES
데이터베이스 테이블 리스트를 보는 방법
최석기
•
1999.07.10 17:45
최혁진 께서 말씀하시기를... > 특정 데이터베이스 파일내에 존재하는 테이블들의 리스트를 델파이 프로그...
장 아무개
•
1999.04.29 10:47
1
COMMENTS
/
0
LIKES
824번 재질문- true가 아니라 false 일때는요?
안치봉
•
1999.04.29 19:36
장 아무개 wrote: > 답변중에 > 집합형이라고 하셨는데 > printer_DBGrid.Options.dgRowLines := true ...
궁금이
•
1999.07.10 04:14
1
COMMENTS
/
0
LIKES
HOT KEY 제어
안치봉
•
1999.07.10 20:23
안녕하세요. 제가 만든 간단한 콤포넌트가 있는데 한델 자료실에 올려드리죠^^; 궁금이 께서 말씀하...
한승협
•
1999.07.10 04:09
4
COMMENTS
/
0
LIKES
통상적인 자작 컴포넌트나 패키지의 위치는?
이호선
•
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
[재질문817번]Drag&Drop내용이 어디 있나요?
장일형
•
1999.07.10 03:54
델파이로 특정 디렉토리를 지우지 못하게 하고 그 디렉토리에 있는 파일을 볼 수 없도록 할 수 있나요? P...
안치봉
•
1999.04.29 07:03
이호선 wrote: > 안녕하세요. > Drag&Drop내용이 델파이 강의에 있다하는데 어디인지 못찾겠는데요. > ...
이호선
•
1999.04.29 06:31
1
COMMENTS
/
0
LIKES
[재질문817번]Drag&Drop내용이 어디 있나요?
안치봉
•
1999.04.29 07:03
이호선 wrote: > 안녕하세요. > Drag&Drop내용이 델파이 강의에 있다하는데 어디인지 못찾겠는데요. > ...
Termy
•
1999.07.10 03:39
4
COMMENTS
/
0
LIKES
소켓으로 파일전송하고 저장하는 법 아시는 분??
구창민
•
1999.07.10 12:01
Termy 께서 말씀하시기를... > 소켓통신으로 다른 컴퓨터에 파일전송하고 저장하고 싶은데 > 소켓으로 파...
김종환
•
1999.07.13 06:09
구창민 께서 말씀하시기를... > Termy 께서 말씀하시기를... > > 소켓통신으로 다른 컴퓨터에 파일전송하...
구창민
•
1999.07.13 08:30
김종환 께서 말씀하시기를... > 구창민 께서 말씀하시기를... > > Termy 께서 말씀하시기를... > > > 소...
김종환
•
1999.07.13 13:41
> 김종환님 구창민입니다. > 죄송합니다. 게시판의 번호가 변하는 줄 몰랐었습니다. > 아래를 주소를 복...
성병규
1999/07/10 19:41
Views
272
Likes
0
Comments
3
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
어떤 공식을 입력시켜 두고 데이타를 공식에 적용하려 합니다.
공식이 영구적이라면 프로그램 코드에 함수로 만들어 놓겠는데...
수정가능성이 있는거라서...
위와같은 공식을 프로그램 수행중에 변경할 수 있는 방법이 있나요?
공식은 a=b+c 나 a=b*c+d등 여러가지가 될수 있어요...
참고로 db는 오라클을 쓰고 있습니다.
질문이 너무 초보적인가요? 그래도 좀...
그럼 오늘도 즐거운 코딩되시길...