Q&A

  • 문자열 다루기..
다음과 같은 Record 구조에서 digitString 이라는 변수가 문제가 됩니다..
digitString은 문자열이 올 수 있는데 정적배열로 선언시(digitString : array[0..9] of char)에는 무리 없이 돌아가지만..
문자열의 길이를 알 수 없기때문에 쓸 수 없습니다.. 반드시 동적배열로 선언해야 합니다.

예를 들면 '12345' 가 있다면.. digitString에는 '12345' 가 들어가게 되고 digitLen 에는 5byte가 들어가야 합니다.

그러나 아래와 같이 작성하면 가변형을 쓸 수 없다는 메세지와 함께 에러가 납니다.
lcs_req_type 은 type을 선택하는것이고.. type중 lcs_req_port_dial 은 총 60개가 올 수 있어서.. 정적배열로 선언했습니다..

lcs_req_port_dial Record안에는 아래와 같이 선언되며 안에 digitString의 동적배열이 존재합니다..



TLCS_REQ_PORT_DIAL = Record
     slot : byte;
     port : byte;
     channel : byte;  // reserved : 0
     digitLen : byte;
     digitString : array of char;   //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//
end;

TLCS_REQ_CONF_ELEM = Record
     elemId : DWORD;
     elemValue : DWORD;
end;

TLCS_REQ_TYPE = Packed Record
     case Integer of
     0: (lcs_req_port_dial : array[0..59] of TLCS_REQ_PORT_DIAL);
     1: (lcs_req_conf_elem : array[0..2] of TLCS_REQ_CONF_ELEM);
     end;

TLCS_REQ_MSG_HD = Record
     prim : Integer;
     svcId : Integer;
     elem : Integer;
     lcs_req_type : TLCS_REQ_TYPE             //
end;


digitString은 문자로 입력받아서.. Record 에 할당해서 String의 Size만큼을 Socket으로 전송해야 하는 구조 입니다..

어떤식으로 구현 해야 할지
조금 이라도 아시는분 답변 부탁드립니다.
2  COMMENTS
  • Profile
    구창민 2003.02.18 21:06
    너무 어렵게 생각하신게 아닌지..

    말씀하시는 가변 길이 문자열 형은

    string 을 쓰시면 됩니다.

    그의 길이는 Length 를 사용하시면 되구요.

    그럼~ 즐거운 프로그래밍 하시길~~


  • Profile
    진돌 2003.02.18 21:18
    그런데요..
    digitString : String; 으로 선언을 해도 에러가 납니다..
    다음과 같습니다

    [Error]Type 'TLCS_REQ_PORT_DIAL' needs finalization - not allowed in variant record


    아 머리복잡하네요..  ㅠㅠ
    해결해주세요 ^^;


    • 진돌
    • 2003.02.19 02:35
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.19 02:58
      SizeOf 함수는 데이터 형의 크기가 반환됩니다. 님이 원하시는 것은 StrLen 이겠군여. 널값을 제외한...
    • 진돌
      2003.02.19 03:04
      그렇다면 Socket 통신을 할때 aaa : String; ________________________________ | size | &nb...
    • 구창민
      2003.02.19 03:22
      무슨 질문인지를 모르겠군여..^_^ 님이 처한 상황을 제가 알수 없기 때문입니다. 다만, 통신을 할때 ...
    • 한원희
      2003.02.19 20:35
      안녕하세요. 한원희입니다. GetActivateWindow API를 이용해 보세요. 그리고, WindowState 속성도 검사...
    • 임옥섭
      2003.02.19 01:37
      vb의 직접실행창 보다는 불편하지만. 델파이도.. Evaluate/Modify 메뉴가 있습니다. 원하는 변수/식 에다...
    • 최용일
      2003.02.19 01:25
      안녕하세요. 최용일입니다. Watch Window를 이용하세요... Ctrl+F5던가... ^^ 항상 즐코하세요...
    • cell
    • 2003.02.19 01:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.19 01:32
      이렇게 해 보세여.. procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin &n...
    • cell
      2003.02.19 01:41
      ..
    • 김기문
    • 2003.02.19 00:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.02.19 01:47
      안녕하세요. 최용일입니다. 델파이 메뉴의 Help/Windows SDK에서 찾아보세요... 그냥 F1누르면 델파이에...
    • 전원이
    • 2003.02.19 00:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.02.19 02:01
      안녕하세요. 최용일입니다. InPortB, OutPortB는 델파이에 없네요... 걍 만들어 쓰세요... procedure...
    • 한원희
      2003.02.19 00:11
      안녕하세요. 한원희입니다. Rx 패키지를 설치하면 됩니다. 자료실에 Rx 패키지가 있으니, 받아서 설치...
    • 김현승
    • 2003.02.18 21:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • △┫┃▒┃COLON
      2003.02.18 23:50
      안녕하세요... 세미콜론입니다. 저도 초보라 잘은 모르지만.... *.DCU  파일은 컴파일시에 자동...
    • Sean
    • 2003.02.18 20:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 신승욱
      2003.02.19 01:42
      이렇게 해보세요..안돼면..저도 몰래요.. close; sql.clear; sql.add('insert into ' + temp_table + '(...
    • 구창민
      2003.02.18 21:11
      DB 질문을 하실때는, 사용하시는 DB 가 먼지를 알려주시면 양질의 답변을 얻으실 수 있을 것입니다. ...
    • Sean
      2003.02.18 23:56
      네.... 답변 감사합니다. DB는 Access이고요... 제가 질문의 내용이 조금 미흡한거 같네요. 지금...
    • 강보춘
    • 2003.02.18 20:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.18 20:57
      Hint Window 와 똑같이 생긴 윈도우를 만들어 현 좌표를 구하신다음, 타이머 내에서 동적 생성 하시...
    • 진돌
    • 2003.02.18 20:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.18 21:06
      너무 어렵게 생각하신게 아닌지.. 말씀하시는 가변 길이 문자열 형은 string 을 쓰시면 됩니다. ...
    • 진돌
      2003.02.18 21:18
      그런데요.. digitString : String; 으로 선언을 해도 에러가 납니다.. 다음과 같습니다 [Error]Type '...
    • 박상윤
      2003.02.26 21:41
      일단 어떤 용도로 사용을 하실려 하는지. 크기를 줄이는 방법은 여러가지가 있습니다. 필요에 따라 사용...
    • 이희진
      2003.02.22 01:08
      어떤 이유에서 파일 크기의 한계를 두어야 하는지 잘 모르겠지만, 이미지 크기가 크게 문제되지 않는거...
    • 김정명
    • 2003.02.18 06:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.02.18 18:47
      for i:=0 to 10 do begin    Application.ProcessMessages;    edit1.text := int...
    • 미소나눔
      2003.02.18 18:56
      Application.ProcessMessages; 이게 있어야징... 즐푸~
    • 토미사랑
      2003.02.18 23:33
      sleep()함수를 사용하면, 프로그램이 완전히 멈춰버리게 되잖아요... sleep()을 사용하지 않고서는???
    • 열심히
    • 2003.02.18 05:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 넘버3
      2003.02.18 05:43
      TPageControl를 Creat할 때 override가 빠진것 같군요... public     constru...
    • 열심히
      2003.02.18 05:51
      페이지 컨트롤은 생성이 됩니다... 탭시트를 생성할때 먼저 생성된 pagecontrol을 넣어줘야하는데 앞...
    • 아폴론
    • 2003.02.18 04:24
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2003.02.18 08:37
      a.cg_krno : G200301001 ...이런 형식의 Char문자가 들어갑니다 a.cg_date : 2003-01-31 ...이런 형식의 C...
    • 이중철
      2003.02.18 11:24
      마지막 필드 추가했다고 논리가 맞지 않는것은 아니에요. 단지 모래시계만 나왔다는 것은 Query가 최적...
    • 아폴론
      2003.02.18 19:31
      이중철님 감사합니다. 설명까지 해 주시고...덕분에 해결이 되었고요 앞으론 SQL문을 좀더 신중히, 차근...
    • 이중철
      2003.02.18 05:28
      음 데이타 베이스가 오라클인것 같은데... 하여간.. 님께서 쿼리를 쓰신것 보고는 판단이 안서요.. 왜냐...
    • 열심히
      2003.02.18 04:32
      어떤 오류인지 알려주실래요? 델파이에서만 오픈이 안되는건지.. 아님 다른데서도 안되는지...