Q&A

  • String문자열에서 여백의 공간을 Null로 채우는 코드를 좀...
Private Sub Command1_Click()
Dim PCode As String * 10

PCode="abcdefg"
PCode = Replace(PCode, " ", "1")
End Sub

안녕하세요? 위의 코드는 비주얼베이직으로 작성된 건데요, 여백의 공간을 1로 채우는 코드입니다. 변수선언부에서PCode 변수에 10자리를 할당하였구요, 코드실행결과 PCode에는 "abcdefg111" 로 저장됩니다.

그런데 델파이로 바꾸고 싶어서 StringReplace를 사용하여 아래와 같이 코딩하였습니다.
procedure TForm1.Button2Click(Sender: TObject);
Var
PCode:String[10];
begin
PCode:='abcdefg';
PCode:=StringReplace(PCode,' ','1',[rfReplaceAll]);
ShowMessage(PCode);
end;

그런데 PCode에는 'abcdefg' 로 저장되거든요..  그래서 베이직에서처럼 동일하게 'abcdefg111' 로 출력이 되게할려면 어떻게 해야 하는지요..
그리고 두번째는.. 여백의 공간에 1 대신 Null값을 집어넣을려면은 어떻게 하면 되는지요..  PCode:=StringReplace(PCode,' ',#0,[rfReplaceAll])  이렇게 했는데 이 코드가 맞습니까?  답변 부탁드립니다...
4  COMMENTS
  • Profile
    정형준 2002.08.30 14:35
    이렇게 하시는 이유가 무엇인지 알수 없어서 관련된 내용을 써봅니다.

    Dynamic Array를 사용해야할 경우

    var PCode: array of char;
    begin
        SetLength(PCode,100);
    end;

    이렇게 하시면 SetLength가 초기화를 해주기 때문에 나머지는 Null로 채워지게 됩니다.


    Static Array를 사용하신다면

    var PCode: array [0..100] of char;
        i : integer;
    begin
        for i := Low(PCode) to High(PCode) do PCode[i] := #0;
    end;

    초기화가 되지 않기 때문에 초기화를 해줘야 합니다.

  • Profile
    세균맨 2002.08.30 02:52
    제가 테스트는 하지 못했지만, 이렇게 한번 해보세요.
    그럼....휘리릭~~~

    procedure TForm1.Button2Click(Sender: TObject);
    Var
    PCode:String[10];
    i : integer ;
    begin
      PCode:='abcdefg';
      for  i := 1 to 10 - length(Pcode) do
         PCode := PCode + '1' ;
      ShowMessage(PCode);
    end;


  • Profile
    한마음 2002.08.30 03:06
    위의 코드 PCode := PCode + '1' 부분에서 '1'대신 Null 값을 집어넣을려면 어떻게 해야하는지요?
  • Profile
    세균맨 2002.08.30 03:30
    그냥 간단하죠....

         PCode := PCode + '1' ; 대신    PCode := PCode + ' ' ;

    요로게 하시면 되군요....... 그럼 뒤에 남는 공간은 space으로 채워집니다..