Q&A

  • StrPas 에 관하여...
에.. 저는 주노라구 합니다.

파스칼로 짜여진 프로그램을 C 로 코드를 바꾸려고 하는데

StrPas 라는 명령이 있더군요. 예) Writeln(StrPas(pass));



이게 뭐하는 명령인지 알고 싶습니다.



아.. 메일로 보내 주시면 감사하겠습니다.

제가 워낙 이곳 저곳을 돌아다녀서 여기에 들리지 못할것 같아서...

부탁합니다.



songjunho@channeli.net 으로....

2  COMMENTS
  • Profile
    test 1999.11.10 13:48
    송준호 wrote:

    > 에.. 저는 주노라구 합니다.

    > 파스칼로 짜여진 프로그램을 C 로 코드를 바꾸려고 하는데

    > StrPas 라는 명령이 있더군요. 예) Writeln(StrPas(pass));

    >

    > 이게 뭐하는 명령인지 알고 싶습니다.

    >

    > 아.. 메일로 보내 주시면 감사하겠습니다.

    > 제가 워낙 이곳 저곳을 돌아다녀서 여기에 들리지 못할것 같아서...

    > 부탁합니다.

    >

    > songjunho@channeli.net 으로....

  • Profile
    홍길동 1999.11.08 09:51


    주노님 아무리 바쁘셔도 이곳에 접속해서 게시물을 찾고 요점 정리하시는데

    10여분 걸리십니까? 하하 농담입니다.. 좋은 시간 되십쇼..



    StrUnit 유닛인가에 StrPas의 프로토타입은 다음과 비슷하게 존재할 것입니다.



    function StrPas(Str: PChar): String;



    C 스타일의 널종료문자열인 PChar형을 파스칼형의 스트링형으로 변환해서

    리턴하도록 되어 있을 겁니다.



    PChar형은 ^Char형과 같으며 널(#0)을 만나기 전까지의 문자열을 갖도록 되어

    있을 겁니다. --; 32비트 포인터로서 사실상 얼마?의 길이를 가질수 있습니다.



    String형은 첫 첨자위치에 문자열의 길이값을 서수형으로 갖게 됩니다.

    (PChar나 String 모두 배열로서 취급할 수 있다는 것 아시죠!)

    델파이 2부터는 컴파일러가 {$H+ Huge Enable} 상태에서 배열첨자를 쓰지 않는

    String형을 AnsiString형으로 인식하게 되고, 2기가바이트까지 다룰수 있을 겁니다.

    {$H+/-}는 컴파일러 옵션에서 Huge String Enable체크박스로도 설정하실 수 있습니다.



    조금 깊숙히 보면, 설정되면 기본적으로 소스상에 String형을 컴파일러가

    AnsiString(각문자 AnsiChar형)으로 인식하고, 설정되지 않으면 String형을

    ShortString(256길이)으로 인식하게 됩니다. AnsiString는 널종료문자열과 같은

    방법으로 억세스되며 메모리상에서 자동으로 관리가 되는 형입니다.

    (당근, 문자열의 길이를 저장하지 않죠).



    델파이 2 이후에서는 PChar형을 스트링형으로 변환하기 위해 일부러 위의 함수를

    쓰실 필요는 없습니다. 하위 버전과의 호환성만을 위해 존재한다고 알고 있으며,

    대입(Assignment)이나 형변환(Type Cast)으로서 자동 변환되는 것으로 알고 있습니다.

    주노님이 질문하신 상황에서 StrPas(pass)대신 String(pass)하시면 될 것 같습니다.

    위와 같이 하면 pass의 PChar내용을 메모리상에서 String형화해서 파라미터값으로

    전달할듯.. ..



    헬프 파일의 String관련 부분을 보시면 널스트링과의 혼합 사용법이나,

    Reference Counting(DLL과 같은 개념, 여러 변수가 같은 스트링을 참조하는 카운터를

    두어 참조), Copy-On-Write등에 대해서도 자세하게 나오니 숙지해보시고

    올려주시기 바랍니다.. 저처럼 대충 아는 버릇은 정말 버려야 할텐데.. 탁..



    참고로 헬프 파일을 직접 찾아보시게 되면 국내 책들이나 번역본의 책에 나오지

    않는 깊은 내용들이 많이 있다는 것을 피부로 느끼게 될겁니다.

    (정품 사용자가 아니니 헬프를 밑고 파헤칠 수밖에..)



    기본적으로 8개 함수(StrCopy, StrECopy, StrLCopy, StrPCopy, StrLPCopy, StrPas,

    StrEnd, StrLen)를 아셔서 기본 스트링 관련 함수와 더하시면 스트링 장풍(?)을

    쏘실 수 있을거라 믿습니다. 아자..



    기본이 충실하지 못해 허덕이는 홍길동 4개월만에 왔다가 후다닥..



    송준호 wrote:

    > 에.. 저는 주노라구 합니다.

    > 파스칼로 짜여진 프로그램을 C 로 코드를 바꾸려고 하는데

    > StrPas 라는 명령이 있더군요. 예) Writeln(StrPas(pass));

    >

    > 이게 뭐하는 명령인지 알고 싶습니다.

    >

    > 아.. 메일로 보내 주시면 감사하겠습니다.

    > 제가 워낙 이곳 저곳을 돌아다녀서 여기에 들리지 못할것 같아서...

    > 부탁합니다.

    >

    > songjunho@channeli.net 으로....