Q&A

  • 문자열 사이에 있는 공백제거하는 코딩???
아래 소스는 인터넷에서 찾은 건데, 앞에 있는공백 없애고, 뒤에 있는 공백 없애는 게 있는데,
제가 원하는 건 앞에도 뒤에서 문자열 사이에도 있는 공백을 없애고 싶은데.... 잘 코딩이 안 되네요.. 고수님들 좀 알려주세요~~





unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

const
Space = #$20;

var
Form1: TForm1;

implementation
{$R *.DFM}

function LTrim(const Str: String): String;
var
len: Byte;
i: Integer;
begin
len := Length(Str);
i := 1;
while (i <= len) and (Str[i] = Space) do
Inc(i);
LTrim := Copy(Str,i,len)
end;

function RTrim(Str: String): String;
var
len: Byte;
begin
len := Length(Str);
while (Str[len] = Space) do
Dec(len);
RTrim := Str
end;

function Trim(Str: String): String;
begin
Trim := LTrim(RTrim(Str))
end;

function RightStr(const Str: String; Size: Word): String;
var
len: Byte;
begin
len := Length(Str);
if Size > len then
Size := len;
RightStr := Copy(Str,len-Size+1,Size)
end;

function LeftStr(const Str: String; Size: Word): String;
begin
LeftStr := Copy(Str,1,Size)
end;

function MidStr(Const Str: String; Size: Word): String;
var
len: Byte;
begin
len := Length(Str);
if Size > len then
Size := len;
MidStr := Copy(Str,((len - Size) div 2)+1,Size)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
{
LTrim() - 문자열 왼쪽의 모든 공백을 제거
RTrim() - 문자열 오른쪽의 모든 공백을 제거
Trim() - LTrim & RTrim
RightStr() - 문자열의 오른쪽에서 부분문자열
LeftStr() - 문자열의 왼쪽에서 부분문자열
MidStr() - 문자열의 중간에서 부분문자열
}

ShowMessage(LTrim(Edit1.Text));
ShowMessage(RTrim(Edit1.Text));
ShowMessage(Trim(Edit1.Text));
ShowMessage(RightStr(Edit1.Text, 3));
ShowMessage(LeftStr(Edit1.Text, 2));
ShowMessage(MidStr(Edit1.Text, 4));
end;

end.



--- 아 래 ------
이 아래 부분은 Kelly라는 함수를 제 나름대로 만들어서 공백을 제거 해보려고 했는데, 도저히 원하는 값을 얻을 수가 없네요..
도움 부탁드립니다.~~!!


function Kelly(const Str: String): String;
var
len: Byte;
i: Integer;
j: Integer;
begin
len := Length(Str);
i := 1;
j := 1;
if i <= len then
if (Str[i] = Space) then
Inc(i);

if i <= len then
if (Str[i] <> Space) then
begin
Kelly := Copy(Str[j],i,i);
Inc(j);
Inc(i);
end;

end;
2  COMMENTS
    • 박송휘
    • 2002.06.10 18:46
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.06.10 18:56
      OnClick Event와 연결된 Button1Click를 직접 불러 주시면 됩니다. 즐거운 하루 되세요!
    • 박송휘
      2002.06.11 05:23
      .......................
    • 최용일
      2002.06.12 12:36
      안녕하세요. 최용일입니다. 다른 프로그램도 가능합니다. 님이하신 코딩에서 Button13.Handle대신에 ...
    • 구현민
    • 2002.06.10 18:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2002.06.10 19:35
      퀵레포트 버그입니다.. 예전에 Usesnet 뒤지다가 그 버그 수정한 콤포넌트를 찾았었는데 이름이 기억이 ...
    • 김태훈
    • 2002.06.10 12:00
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.06.10 19:02
      여러가지 방법이 있지만 제가 추천하는 방법은 Samples Tab에 있는 CSpinEdit1 Component를 사용하는 겁니...
    • 김태훈
      2002.06.11 11:12
      저는 이걸 함수로 만들려고 하거든요. 100이하만 입력할수 있고 아예 100이상은 사용자가 입력못하게요....
    • 성더기
      2002.06.11 19:49
      function MaxHund(Value : integer):boolean; begin   if (Value >= 1) and (Value <= 1...
    • 머슴
      2002.06.10 19:00
      먼저 에디트박스속성중에 MaxLength를 3으로 해주시고요.. KeyPress이벤트에서 숫자만 입력되도록 ...
    • 김태훈
      2002.06.11 11:08
      숫자만 입력되게는 했어요. 전 100이하의 숫자만 입력가능하게 하고 싶거든요. 100이상이면 메시지를 보...
    • 김도형
      2002.06.10 18:56
      숫자만 입력하게 했으믄 쉬운거 같은데염...   case strtoint(Edit2.text) of   ...
    • 김태훈
      2002.06.11 11:10
      100이상이면 메시지나 기타처리를 하는게 아니라 아예 100이상의 숫자를 사용자가 입력 못하게 하고 싶거...
    • 정경주
    • 2002.06.10 09:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ☆영민★
      2002.06.10 10:19
      저도 아는게 별루 없지만.. 혹시.. chr(13) 으로 하면 되지 않을까요?? 엔터(Enter / Return)키 값이 1...
    • 머슴
      2002.06.10 23:20
      델파이 실행프로그램이 그리 크지가 않습니다..(제가 느끼기에는) 혹시 다른 원인이 있지 않을까 생...
    • 티모니
      2002.06.10 21:25
      Use CASE.. statments rather than IF..ELSE.. clauses.        &nb...
    • 티모니
      2002.06.10 21:12
      우선은 프로그램을 만드실때여.. 필요 없는건 uses 에서 빼주시구여... 프로그램을 기능들을 dll로 따로...
    • 장명선
      2002.06.10 01:53
      Write 를 쓰세요... 이것은 길이만큼 보내는 명령입니다. 프로퍼티를 참조하세요 예) ComPort.Wri...
    • 나그네
      2002.06.10 03:54
      고맙습니다. 답변해주셔서.. 근데요. ComPort.Write('ABCD', 4); 이거랑여 ComPort.WriteStr('ABCD'); ...
    • 장명선
      2002.06.10 05:35
      문자형 전송에서 Null값이 나오면 Null값에서 중단이 됩니다. 그래서 특정 길이만큼을 전송하라고 명령을 ...
    • 이동준
    • 2002.06.09 11:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.06.10 01:51
      BDE->Configuration->Drivers->Native DLL32 -> SQLORA8.DLL VENDOR INIT -> OCI.DLL ...
    • 장명선
    • 2002.06.09 09:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신석기
      2002.07.23 10:04
      버젼과 관계가 있습니다. 설치된 ocx보다 버젼이 높다면 해당 경로에서 다운 받아 설치합니다. 옵션에서 ...
    • 김장훈
    • 2002.06.09 07:49
    • 2 COMMENTS
    • /
    • 1 LIKES
    • 깨구락지
      2002.06.09 08:29
      myStr:=StringReplace(trim(tStr),' ','',[rfReplaceAll]) 공백은 무조건 제거합니다.
    • 김정용
      2008.07.31 00:51
      깨구락지 님 감사합니다.
    • 오현주
    • 2002.06.09 06:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_zzang
      2002.06.09 08:12
      여기 가면 자세한 정보를 얻으실 수 있습니다. www.oracleclub.com 상단 메뉴에 보면 oracle > orac...
    • 오현주
      2002.06.09 23:54
      답변은 고맙습니다.. 그런데 저는 dataset의 query로 이용해서 데이터베이스에 접근을 해서 커서를 이동...
    • 이소진
    • 2002.06.09 04:17
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2002.06.09 05:01
      직접 컴포넌트로 만드셔야 합니다. 아래처럼 새로운 Unit에 코딩하시구.. TNewEdit = class(TEdit) .... ...
    • 박종민
      2002.06.10 16:27
      델파이 잘 못하는 애들한테 왜 이런걸 내주는지 답변은 잘 봤는데 포기입니다... ㅡ.ㅡ
    • 깨구락지
      2002.06.11 20:30
      컴포넌트 만들기가 어려우시면 만드러진 컴포넌트를 사용하십시오. 자료실에 CurrencyEdit 컴포넌트를 이...
    • 이재식
      2002.06.09 04:20
      var    HexiDecimal : String ; -----------------------------------    &...
    • 이승근
    • 2002.06.09 01:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.06.09 02:04
      정확한지는 모르지만... 파라독스에서 인라이뷰가 되는지 잘모르겠네요...
    • 권광일
      2002.06.15 02:01
      DirectX 의 기능중에 DES 기능이 있습니다. 그중에 TimeLine 이라는 것이 있는데, 그 조작을 XML 로도 ...
    • 이동현
    • 2002.06.09 00:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_zzang
      2002.06.09 00:49
      1. DataSet.RecordCount 로 체크하시던가 2. SELECT COUNT(1) FROM 출석부 WHERE 이름 = '테스트' 여...
    • 송재진
    • 2002.06.09 00:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2002.06.09 04:26
      님께서 질문하신 내용은 그리 어렵지 않게 델파에서 주는 트리뷰 컴포넌트로 할수 있습니다. 특정 노드에...