Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[11443] 왕초보 도와주세요..
okpiao [okpiao] 1805 읽음    2007-08-06 04:22
얼마전 친구한테서 델파이로 만들어진 화상 메신져 소스를 받았는데요..
저는 프로그램에 대해서 왕초보 랍니다..
그래서 고수님들의 도움이 피료한데요...
이거좀 도와주세요..

아마도 제생각엔 TypeDef.inc 이라는 파일이 한개가 없는거 같던데..

실행시킬려니까 [Fatal Error] Globals.pas(8): File not found: '..\TypeDef.inc' 이런 문구가 뜨더군요..

Globals.pas 파일의 소스는 아래와 같습니다

unit Globals;

interface

uses
  Windows, Classes, SysUtils, Forms, IniFiles;

{$INCLUDE '..\TypeDef.inc'}

// ----------------------------------------------------------------------------
// Constant
// ----------------------------------------------------------------------------
const
  PS_PORT = 10501; // Presencer Server 기본포트
  CS_PORT = 10502; // Chat Server 기본포트
  VIDEO_PORT = 10503; // Video 기본 포트
  VOICE_SEND_PORT = 10505; // Voice 송신 포트
  VOICE_RECV_PORT = 10506; // Voice 수신 포트
  NDS_PORT = 10504; // NetworkDetect Server 기본포트
  // ---------------------------------------------------------------------------

  // by 권호석 2004.09.06 ------------------------------------------------------
  // MAX_BUFFER_SIZE = 65536;
  // 기존의 65536바이트를 넘는 경우가 발생해 사이즈를 좀 더 늘렸다.
  // by 권호석 2004.09.23 ----------------------------------------------------
  // 상수값으로 했을경우 98에서 싸이즈를 수용못할까봐 형을 지정해서 값을 넣음
  MAX_BUFFER_SIZE = 100000; // 네트워크 상으로 데이터를 한번에 읽을 수 있는 크기
  // ---------------------------------------------------------------------------
  MAIN_TOP_HEIGHT = 200; // 메인화면 위 메뉴부분 높이
  MAIN_PUBLIC_HEIGHT = 131; // 메인화면 아래 공지사항 부분 높이

  CRLF = #13#10;
  CRLFCRLF = #13#10#13#10;

  DEFAULT_SITE    = 'http://www.kissgirl.co.kr';
  DEFAULT_ADDR    = '121.212.7.45';
  DEFAULT_NAME_K  = '키스걸';
  DEFAULT_NAME_E  = 'kissgirl';
  DEFAULT_CAPTION = '키스걸';
//  NOTICE_CAPTION  = '[캐스토피아 알림]';

  DEFAULT_ITEM_PATH = '/pdsfile/item/';

// ----------------------------------------------------------------------------
// TGlobal
// ----------------------------------------------------------------------------
type
  TGlobal = class
  public
    constructor Create;
    destructor Destroy; override;
    procedure Load;
    procedure Save;
  public // INI file 과 관련되지 않은 정보
    ClientState : TClientState;
  public // INI file 과 관련된 정보
    // 메인폼 좌표 정보
    MainLeft, MainTop, MainWidth, MainHeight: Integer;
    // 채팅폼 좌표 정보
    ChatLeft, ChatTop, ChatWidth, ChatHeight: Integer;
    // GK 정보
    GK_URL: String;
    // 로그인 정보
    SaveID: Boolean;
    ID: String;
    PW: String; // INI file에 저장하지 않는다.
    PurposeIndex: Integer;
  public
    // 개인정보 (Process_Login 에서 세팅된다)// INI file에 저장하지 않는다.
    NickName: String;
    Sex: String;
    Location: String;
    Age: Integer;
    Level: Integer;
    Purpose: String;
    PictureURL: String;
    // 채팅관련초기값
{
    ChatDecPoint1   : Integer;        // 채팅비용 1
    ChatDecPoint2   : Integer;        // 채팅비용 2
    ChatDecPoint3   : Integer;        // 채팅비용 3
    ChatDecPoint4   : Integer;        // 채팅비용 4
    ChatDecPoint5   : Integer;        // 채팅비용 5
    ChatDecPoint6   : Integer;        // 채팅비용 6
    ChatDecPoint7   : Integer;        // 채팅비용 7
    ChatDecPoint8   : Integer;        // 채팅비용 8
}
    MaxInspectPoint : Integer;        // 관람불가 포인트

    // 환경설정정보
    AllowMemo: Boolean;
    AlarmBuddy: Boolean;
    AllowInspect: Boolean; // 여자전용
    AlarmCondition: Boolean;
    AlarmLocation: String;
    AlarmSex: String;
    AlarmLowerAge: Integer;
    AlarmUpperAge: Integer;
    AllowSMS: Boolean;
    SMSStarTime: String;
    SMSEndTime: String;
    InitChatPoint: Integer; // 여자전용
    // 기타 정보
    Point: Integer;
    // 디버그 옵션
    ViewChangePoint: Boolean;
    AutoOpenVideo: Boolean;
    // Audio Tuning Wizard
    RecordDeviceID: Integer;
    PlayDeviceID: Integer;
    PlayVolume: Integer;
    RecordVolume: Integer;
    // ServerVoice
    ServerVoiceBufferCount: Integer;
    ServerVoicePort: Integer;
    ServerVoiceThreadPriority: Integer;
    ServerVoiceKeepAliveTime: DWORD;
    // ClientVoice
    ClientVoiceBufferCount: Integer;
    ClientVoiceRecvPort: Integer;
    ClientVoiceSendPort: Integer;
    ClientVoiceThreadPriority: Integer;
    ClientVoiceMinThresholdTime: DWORD;
    ClientVoiceMaxThresholdTime: DWORD;
    // Version 정보
    Version: String;
    // by 권호석 2004.08.27 ----------------------------------------------------
    // Network Type 정보
    NetworkType : TNetworkType;
    NetworkPort : Integer;
    WaitTime    : Integer;
    // -------------------------------------------------------------------------
    Monitor     : Boolean;
    MonitorID  : String;
  end;

var
  Global: TGlobal = nil;
//    MAX_BUFFER_SIZE : Integer;

// ----------------------------------------------------------------------------
// General Function
// ----------------------------------------------------------------------------
function IfThen(Condition: Boolean; TrueValue: String; FalseValue: String): String;
function StrToState(StrState: String): TClientState;
function StrToNetworkType(Value: String): TNetworkType;
function NetworkTypeToStr(Value: TNetworkType): String;
procedure ActiveApplication;
function StringToPriceType( PriceType : String ): TPriceType;
function PriceTypeToString( PriceType : TPriceType ): String;

implementation

// ----------------------------------------------------------------------------
// TGlobal
// ----------------------------------------------------------------------------
constructor TGlobal.Create;
begin
    inherited;
    ClientState := csNone;
    // 개인정보
    Sex := '';
    Location := '';
    Age := 0;
    Load;

    // by 권호석 2004.09.23 -------------------------------------------------
    // 상수값으로 했을경우 98에서 싸이즈를 수용못할까봐 형을 지정해서 값을 넣음
//    MAX_BUFFER_SIZE := 10000;
    // ----------------------------------------------------------------------
end;

destructor TGlobal.Destroy;
begin
    Save;
    inherited;
end;

procedure TGlobal.Load;
var
    Path: String;
    IniFile: TIniFile;
begin
    Path := ExtractFilePath(Application.ExeName);
    IniFile := TIniFile.Create(Path + DEFAULT_NAME_E + '.ini');
    // 메인폼 좌표 정보
    MainLeft := IniFile.ReadInteger('Coordination', 'MainLeft', -1);
    MainTop := IniFile.ReadInteger('Coordination', 'MainTop', 0);
    MainWidth := IniFile.ReadInteger('Coordination', 'MainWidth', 500);
    MainHeight := IniFile.ReadInteger('Coordination', 'MainHeight', 640);
    // 채팅폼 좌표 정보
    ChatLeft := IniFile.ReadInteger('Coordination', 'ChatLeft', -1);
    ChatTop := IniFile.ReadInteger('Coordination', 'ChatTop', -1);
    ChatWidth := IniFile.ReadInteger('Coordination', 'ChatWidth', -1);
    ChatHeight := IniFile.ReadInteger('Coordination', 'ChatHeight', -1);
    // GK 정보
    GK_URL := IniFile.ReadString('URL', 'GK_URL', DEFAULT_SITE + '/gk.txt');
    // 로그인 정보
    SaveID := IniFile.ReadBool('Login', 'SaveID', false);
    ID := IniFile.ReadString('Login', 'ID', '');
    // by 권호석 2004.09.09 ----------------------------------------------------
    // 비밀번호를 초기화시킨다.
    PW := '';
//    PW := IniFile.ReadString('Login', 'PW', '');
    // -------------------------------------------------------------------------

    PurposeIndex := IniFile.ReadInteger('Login', 'PurposeIndex', 0);
    // 디버그 옵션
    ViewChangePoint := IniFile.ReadBool('Debug', 'ViewChangePoint', false);
    AutoOpenVideo := IniFile.ReadBool('Debug', 'AutoOpenVideo', true);
    // Audio Tuning Wizard
    RecordDeviceID := IniFile.ReadInteger('AudioTuningWizard', 'RecordDeviceID', 0);
    PlayDeviceID := IniFile.ReadInteger('AudioTuningWizard', 'PlayDeviceID', 0);
    PlayVolume := IniFile.ReadInteger('AudioTuningWizard', 'PlayVolume', 10);
    RecordVolume := IniFile.ReadInteger('AudioTuningWizard', 'RecordVolume', 10);
    // ServerVoice
    ServerVoiceBufferCount := IniFile.ReadInteger('ServerVoice', 'BufferCount', 2);
    ServerVoicePort := IniFile.ReadInteger('ServerVoice', 'Port', 11010);
    ServerVoiceThreadPriority := IniFile.ReadInteger('ServerVoice', 'ThreadPriority', THREAD_PRIORITY_TIME_CRITICAL);
    ServerVoiceKeepAliveTime := IniFile.ReadInteger('ServerVoice', 'KeepAliveTime', 10000);
    // ClientVoice
    ClientVoiceBufferCount := IniFile.ReadInteger('ClientVoice', 'BufferCount', 2);
    ClientVoiceRecvPort := IniFile.ReadInteger('ClientVoice', 'RecvPort', 11011);
    ClientVoiceSendPort := IniFile.ReadInteger('ClientVoice', 'SendPort', 11010);
    ClientVoiceThreadPriority := IniFile.ReadInteger('ClientVoice', 'ThreadPriority', THREAD_PRIORITY_TIME_CRITICAL);
    ClientVoiceMinThresholdTime := IniFile.ReadInteger('ClientVoice', 'MinThresholdTime', 120);
    ClientVoiceMaxThresholdTime := IniFile.ReadInteger('ClientVoice', 'MaxThresholdTime', 1000);

    // by 권호석 2004.08.27 ----------------------------------------------------
    // Network Type 정보
    if( NetworkType = ntNone ) then
    begin
        NetworkType := TNetworkType( IniFIle.ReadInteger( 'NetworkDetect', 'NetworkType', 0 ) );
    end;
    NetworkPort  := IniFile.ReadInteger( 'NetworkDetect', 'Port', 10054 );
    WaitTime     := IniFile.ReadInteger( 'NetworkDetect', 'WaitTime', 100 );
    // -------------------------------------------------------------------------

    IniFile.Free;

    IniFile := TIniFile.Create(Path + 'Version.ini');
    // Version 정보
    Version := IniFile.ReadString('Version', 'Version', '');

    Inifile.Free;
    //--------------------------------------------------------------------------
end;

procedure TGlobal.Save;
var
    Path: String;
    IniFile: TIniFile;
begin
    Path := ExtractFilePath(Application.ExeName);
    IniFile := TIniFile.Create(Path + DEFAULT_NAME_E + '.ini');

    try
        // 메인폼 좌표 좌표
        IniFile.WriteInteger('Coordination', 'MainLeft', MainLeft);
        IniFile.WriteInteger('Coordination', 'MainTop', MainTop);
        IniFile.WriteInteger('Coordination', 'MainWidth', MainWidth);
        IniFile.WriteInteger('Coordination', 'MainHeight', MainHeight);
        // 채팅폼 좌표 정보
        IniFile.WriteInteger('Coordination', 'ChatLeft', ChatLeft);
        IniFile.WriteInteger('Coordination', 'ChatTop', ChatTop);
        IniFile.WriteInteger('Coordination', 'ChatWidth', ChatWidth);
        IniFile.WriteInteger('Coordination', 'ChatHeight', ChatHeight);
        // GK
        IniFile.WriteString('URL', 'GK_URL', GK_URL);
        // 로그인 정보
        IniFile.WriteBool('Login', 'SaveID', SaveID);
        IniFile.WriteString('Login', 'ID', ID);
        // IniFile.WriteString('Login', 'PW', PW); // INI file에 저장하지 않는다.
        IniFile.WriteInteger('Login', 'PurposeIndex', PurposeIndex);
        // 디버그 옵션
        IniFile.WriteBool('Debug', 'ViewChangePoint', ViewChangePoint);
        IniFile.WriteBool('Debug', 'AutoOpenVideo', AutoOpenVideo);
        // Audio Tuning Wizard
        IniFile.WriteInteger('AudioTuningWizard', 'RecordDeviceID', RecordDeviceID);
        IniFile.WriteInteger('AudioTuningWizard', 'PlayDeviceID', PlayDeviceID);
        IniFile.WriteInteger('AudioTuningWizard', 'PlayVolume', PlayVolume);
        IniFile.WriteInteger('AudioTuningWizard', 'RecordVolume', RecordVolume);
        // ServerVoice
        IniFile.WriteInteger('ServerVoice', 'BufferCount', ServerVoiceBufferCount);
        IniFile.WriteInteger('ServerVoice', 'Port', ServerVoicePort);
        IniFile.WriteInteger('ServerVoice', 'ThreadPriority', ServerVoiceThreadPriority);
        IniFile.WriteInteger('ServerVoice', 'KeepAliveTime', ServerVoiceKeepAliveTime);
        // ClientVoice
        IniFile.WriteInteger('ClientVoice', 'BufferCount', ClientVoiceBufferCount);
        IniFile.WriteInteger('ClientVoice', 'RecvPort', ClientVoiceRecvPort);
        IniFile.WriteInteger('ClientVoice', 'SendPort', ClientVoiceSendPort);
        IniFile.WriteInteger('ClientVoice', 'ThreadPriority', ClientVoiceThreadPriority);
        IniFile.WriteInteger('ClientVoice', 'MinThresholdTime', ClientVoiceMinThresholdTime);
        IniFile.WriteInteger('ClientVoice', 'MaxThresholdTime', ClientVoiceMaxThresholdTime);

        // by 권호석 2004.08.27 ------------------------------------------------
        // Network Type 정보
        IniFile.WriteInteger('NetworkDetect', 'NetworkType', Integer(NetworkType) );
        IniFile.WriteInteger('NetworkDetect', 'Port', NetworkPort );
        IniFile.WriteInteger('NetworkDetect', 'WaitTime', WaitTime );
        // ---------------------------------------------------------------------
    finally
        IniFile.Free;
    end;
end;

// ----------------------------------------------------------------------------
// General Function
// ----------------------------------------------------------------------------
function IfThen(Condition: Boolean; TrueValue: String; FalseValue: String): String;
begin
    if Condition then
        Result := TrueValue
    else
        Result := FalseValue;
end;

function StrToState(StrState: String): TClientState;
begin
    if StrState = 'CS_NONE' then
        Result := csNone
    else if StrState = 'CS_LOGOUT' then
        Result := csLogout
    else if StrState = 'CS_LOGIN' then
        Result := csLogin
    else if StrState = 'CS_VACANT' then
        Result := csVacant
    else if StrState = 'CS_CHAT' then
        Result := csChat
    else if StrState = 'CS_LOGOUTTING' then
        Result := csLogoutting
    else
        Result := csNone;
end;

function StrToNetworkType(Value: String): TNetworkType;
begin
    Result := TNetworkType(StrToInt(Value));
end;
function NetworkTypeToStr(Value: TNetworkType): String;
begin
    Result := IntToStr(Integer(Value));
end;


// by 권호석 2004.09.22 --------------------------------------------------------
// 활성화가 안되 있을경우 깜박임 현상
procedure ActiveApplication;
var
a : FlashwInfo;
begin
    if( Application.Active = False ) then
    begin
       a.cbSize := SizeOf(a);
       a.hwnd := Application.Handle;
       a.dwFlags := FLASHW_ALL;
       a.uCount := 5;
       a.dwTimeout := 500;
       FlashWindowEx( a );
    end;
end;
// ----------------------------------------------------------------------------
// 스트링을 채팅타입으로 변환
function StringToPriceType( PriceType : String ): TPriceType;
// ----------------------------------------------------------------------------
begin
    if( PriceType = FREE_CHAT ) then Result := ptFree
    else
    if( PriceType = CHARGE_CHAT ) then Result := ptCharge
    else Result := ptNone;
end;

// ----------------------------------------------------------------------------
// 채팅타입을 스트링으로 변환
function PriceTypeToString( PriceType : TPriceType ): String;
// ----------------------------------------------------------------------------
begin
    if( PriceType = ptFree ) then Result := FREE_CHAT
    else
    if( PriceType = ptCharge ) then Result := CHARGE_CHAT
    else Result := '';
end;

end.

이런 소스구요.

D:\ D드라이버에 TypeDef.inc 라는 파일을 하나 만들고 다시 F9를 누르니깐

[Error] Globals.pas(55): Undeclared identifier: 'TClientState'
[Error] Globals.pas(129): Undeclared identifier: 'TNetworkType'
[Error] Globals.pas(149): Undeclared identifier: 'TPriceType'
[Error] Globals.pas(160): Undeclared identifier: 'csNone'
[Error] Globals.pas(231): Undeclared identifier: 'ntNone'
[Error] Globals.pas(321): Undeclared identifier: 'csNone'
[Error] Globals.pas(323): Undeclared identifier: 'csLogout'
[Error] Globals.pas(325): Undeclared identifier: 'csLogin'
[Error] Globals.pas(327): Undeclared identifier: 'csVacant'
[Error] Globals.pas(329): Undeclared identifier: 'csChat'
[Error] Globals.pas(331): Undeclared identifier: 'csLogoutting'
[Error] Globals.pas(367): Undeclared identifier: 'FREE_CHAT'
[Error] Globals.pas(367): Undeclared identifier: 'ptFree'
[Error] Globals.pas(369): Undeclared identifier: 'CHARGE_CHAT'
[Error] Globals.pas(369): Undeclared identifier: 'ptCharge'
[Error] Globals.pas(370): Undeclared identifier: 'ptNone'
[Error] Globals.pas(378): Undeclared identifier: 'ptFree'
[Error] Globals.pas(378): Undeclared identifier: 'FREE_CHAT'
[Error] Globals.pas(380): Undeclared identifier: 'ptCharge'
[Error] Globals.pas(380): Undeclared identifier: 'CHARGE_CHAT'
[Fatal Error] Main.pas(8): Could not compile used unit 'Globals.pas'

이렇케 쭈욱.. 에러원인이 나오던데..
어떻케 하면 되나요?
누구좀 도와주세요.. 부탁드림니다 ㅠㅠㅠ

+ -

관련 글 리스트
11443 왕초보 도와주세요.. okpiao 1805 2007/08/06
11445     Re:왕초보 도와주세요.. 까막 1906 2007/08/06
11447         Re:Re:왕초보 도와주세요.. okpiao 1533 2007/08/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.