님들 도와 주세여.....속도같은 고 단위는...흐흑~제겐 너무 벅차네여..ㅠㅠ
제가 하고 싶은 건 text파일을 불러와서 그 파일내의 2칸 이상의 빈칸을 찾아내서 지우는 겁니다.
어렵게 어렵게 방법을 찾아내긴 했는데..(초보는 너무 힘듭니다..ㅜㅡ) 이게 text의 용량이 몇 백KB(MB..아닙니다..)가 넘으니..속도가 너무 느려집니다.
10분 이상씩 조용~하구여..
님들...도와 주세여...어떻해야 속도를 올릴 수 있죠?ㅡㅜ
아래는 제가 짠 2칸 이상의 빈칸을 찾아내서 지우는 소스 입니다.
보시고 도와주세요~!!!
procedure TMainForm.noemptyClick(Sender: TObject);
var
S, temp: string;
P : Integer;
begin
S := Memo.Text;
temp := '';
p := Pos(' ', S); //빈칸 위치 찾기
while p <> 0 do //빈칸이 있는 동안 계속 찾기
begin
temp := temp + Copy(S, 1, p -1) ;
Delete(S, 1, p);
p := Pos(' ', S);
end;
Memo.Clear;
Memo.Text := temp + ' ';
end;
procedure TMainForm.noemptyClick(Sender: TObject);
var
s1,s2:string;
p1,p2:PChar;
len:integer;
begin
s1:=Memo.Text;
len:=length(s1);
p1:=PChar(s1);
Setlength(s2,len); // 미리 길이를 정해주면 재할당하지 않으므로 빠릅니다.
p2:=Pointer(s2);
while p1^<>#0 do // p1은 PChar로 타입캐스트 했으므로 이것이 가능!
begin
if (p1^<>' ') or ((p1+1)^<>' ') then
begin
p2^:=p1^;
inc(p2);
end;
inc(p1);
end;
SetLength(s2,p2-Pointer(s2)); // p2는 Pointer 로 타입캐스트 했으므로..
Memo.Text :=s2;
end;