델파이를 시작한지 한달정도 된 초보가 올립니다.
저는 숫자(돈)을 많이 다루다 보니까 어떤 곳에서 숫자를 한글금액으로 바꿔주는 함수를 다운받았는데 아주 잘 작동하더군요..
그런데 이함수를 다른 프로젝트에서도 필요할 것 같아서 공용유닛으로 만들어서 uses절에다가 포함만 시키고 자유로이 호출하여 사용하고자 하는데
책을 보고 기본적인 폼 없는 유닛을 만들어 사용해 보니 에러가 나더군요...
(자세한 것은 아래에..)
이 유닛에 포함된 함수안에는 StrToInt()라는 함수가 있는데 이 부분에서 에러가 납니다. 에러난 함수 가 어느 모듈에 포함되어 있는가 알아보았더니 SysUtils에 있는것 같아서 이유닛의 Interface절 아래에 uses절을 만들어서 포함시켜도 같은 에러가 나고 uses절 자체도 인식을 하지 못합니다...
제발 절 좀 도와 주실분 계세요.???
혹시 다른 프로젝트 옵션을 셋팅해 줘야 하는지...
아니면 공용유닛에 다른 무언가를 집어넣어야 하는지....
---------------------------------------
호출하는 유닛
unit ddd;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
URLabels, StdCtrls, kongyoung;
type
TForm1 = class(TForm)
Edit1: TEdit;
wLabel1: TwLabel;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
wLabel1.Caption := Digit_to_Kum(Edit1.Text);
Edit1.SelectAll;
end;
end;
end.
호출받는 공용유닛
(이 유닛에 각종 함수나 프로시져를 선언,정의 할려고 합니다.)
unit kongyoung;
interface
function Digit_to_kum(str : string): string;
implementation
function Digit_to_kum(str : string): string;
var
aStr : array[1..11] of String;
Input_Str : String;
sMony : String;
aMony : array[1..09] of String;
i : integer;
begin
Input_Str := str;
sMony := '';
aMony[1] := '일';
aMony[2] := '이';
aMony[3] := '삼';
aMony[4] := '사';
aMony[5] := '오';
aMony[6] := '육';
aMony[7] := '칠';
aMony[8] := '팔';
aMony[9] := '구';
for i := 10 downto 1 do begin
aStr[i] := copy( Input_Str, Length(Input_Str), 1 );
if aStr[i] = '' then aStr[i] := '0';
Input_Str := copy(Input_Str,1,Length(Input_Str)-1);
end;
for i := 1 to 10 do begin
if aStr[i] = '0' then Continue;
sMony := sMony + aMony[StrToInt(aStr[i])];
if i = 1 then sMony := sMony + '조'
else if i = 2 then sMony := sMony + '억'
else if (i = 3) and (aStr[i+1] = '0')
then sMony := sMony + '천만'
else if i = 3 then sMony := sMony + '천'
else if (i = 4) and (aStr[i+1]='0')
then sMony := sMony + '백만'
else if i = 4 then sMony := sMony + '백'
else if (i = 5) and (aStr[i+1] = '0')
then sMony := sMony + '십만'
else if i = 5 then sMony := sMony + '십'
else if i = 6 then sMony := sMony + '만'
else if i = 7 then sMony := sMony + '천'
else if i = 8 then sMony := sMony + '백'
else if i = 9 then sMony := sMony + '십';
end;
if sMony = '' then sMony := '영';
Result := '₩' + sMony + '원정';
end;
end.
unit kongyoung;
interface
uses Sysutils; // <= 요 부분이죠...
function Digit_to_kum(str : string): string;
implementation
function Digit_to_kum(str : string): string;
var
aStr : array[1..11] of String;
Input_Str : String;
sMony : String;
aMony : array[1..09] of String;
i : integer;
begin
Input_Str := str;
sMony := '';
aMony[1] := '일';
aMony[2] := '이';
aMony[3] := '삼';
aMony[4] := '사';
aMony[5] := '오';
aMony[6] := '육';
aMony[7] := '칠';
aMony[8] := '팔';
aMony[9] := '구';
for i := 10 downto 1 do begin
aStr[i] := copy( Input_Str, Length(Input_Str), 1 );
if aStr[i] = '' then aStr[i] := '0';
Input_Str := copy(Input_Str,1,Length(Input_Str)-1);
end;
for i := 1 to 10 do begin
if aStr[i] = '0' then Continue;
sMony := sMony + aMony[StrToInt(aStr[i])];
if i = 1 then sMony := sMony + '조'
else if i = 2 then sMony := sMony + '억'
else if (i = 3) and (aStr[i+1] = '0')
then sMony := sMony + '천만'
else if i = 3 then sMony := sMony + '천'
else if (i = 4) and (aStr[i+1]='0')
then sMony := sMony + '백만'
else if i = 4 then sMony := sMony + '백'
else if (i = 5) and (aStr[i+1] = '0')
then sMony := sMony + '십만'
else if i = 5 then sMony := sMony + '십'
else if i = 6 then sMony := sMony + '만'
else if i = 7 then sMony := sMony + '천'
else if i = 8 then sMony := sMony + '백'
else if i = 9 then sMony := sMony + '십';
end;
if sMony = '' then sMony := '영';
Result := '₩' + sMony + '원정';
end;
end.
잘 되는데요...
홍영인 wrote:
> 델파이를 시작한지 한달정도 된 초보가 올립니다.
> 저는 숫자(돈)을 많이 다루다 보니까 어떤 곳에서 숫자를 한글금액으로 바꿔주는 함수를 다운받았는데 아주 잘 작동하더군요..
>
> 그런데 이함수를 다른 프로젝트에서도 필요할 것 같아서 공용유닛으로 만들어서 uses절에다가 포함만 시키고 자유로이 호출하여 사용하고자 하는데
>
> 책을 보고 기본적인 폼 없는 유닛을 만들어 사용해 보니 에러가 나더군요...
> (자세한 것은 아래에..)
> 이 유닛에 포함된 함수안에는 StrToInt()라는 함수가 있는데 이 부분에서 에러가 납니다. 에러난 함수 가 어느 모듈에 포함되어 있는가 알아보았더니 SysUtils에 있는것 같아서 이유닛의 Interface절 아래에 uses절을 만들어서 포함시켜도 같은 에러가 나고 uses절 자체도 인식을 하지 못합니다...
>
> 제발 절 좀 도와 주실분 계세요.???
>
> 혹시 다른 프로젝트 옵션을 셋팅해 줘야 하는지...
> 아니면 공용유닛에 다른 무언가를 집어넣어야 하는지....
> ---------------------------------------
> 호출하는 유닛
> unit ddd;
> interface
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> URLabels, StdCtrls, kongyoung;
> type
> TForm1 = class(TForm)
> Edit1: TEdit;
> wLabel1: TwLabel;
> procedure Edit1KeyPress(Sender: TObject; var Key: Char);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
> var
> Form1: TForm1;
> implementation
> {$R *.DFM}
> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
> begin
> if Key = #13 then begin
> wLabel1.Caption := Digit_to_Kum(Edit1.Text);
> Edit1.SelectAll;
> end;
> end;
> end.
>
> 호출받는 공용유닛
> (이 유닛에 각종 함수나 프로시져를 선언,정의 할려고 합니다.)
> unit kongyoung;
> interface
> function Digit_to_kum(str : string): string;
> implementation
> function Digit_to_kum(str : string): string;
> var
> aStr : array[1..11] of String;
> Input_Str : String;
> sMony : String;
> aMony : array[1..09] of String;
> i : integer;
> begin
> Input_Str := str;
> sMony := '';
> aMony[1] := '일';
> aMony[2] := '이';
> aMony[3] := '삼';
> aMony[4] := '사';
> aMony[5] := '오';
> aMony[6] := '육';
> aMony[7] := '칠';
> aMony[8] := '팔';
> aMony[9] := '구';
>
> for i := 10 downto 1 do begin
> aStr[i] := copy( Input_Str, Length(Input_Str), 1 );
> if aStr[i] = '' then aStr[i] := '0';
> Input_Str := copy(Input_Str,1,Length(Input_Str)-1);
> end;
>
> for i := 1 to 10 do begin
> if aStr[i] = '0' then Continue;
> sMony := sMony + aMony[StrToInt(aStr[i])];
>
> if i = 1 then sMony := sMony + '조'
> else if i = 2 then sMony := sMony + '억'
> else if (i = 3) and (aStr[i+1] = '0')
> then sMony := sMony + '천만'
> else if i = 3 then sMony := sMony + '천'
> else if (i = 4) and (aStr[i+1]='0')
> then sMony := sMony + '백만'
> else if i = 4 then sMony := sMony + '백'
> else if (i = 5) and (aStr[i+1] = '0')
> then sMony := sMony + '십만'
> else if i = 5 then sMony := sMony + '십'
> else if i = 6 then sMony := sMony + '만'
> else if i = 7 then sMony := sMony + '천'
> else if i = 8 then sMony := sMony + '백'
> else if i = 9 then sMony := sMony + '십';
> end;
> if sMony = '' then sMony := '영';
> Result := '₩' + sMony + '원정';
> end;
> end.
>