Q&A

  • 제 소스 간략하게 하고픈데여... 너무 허접해여.. ㅠ.ㅠ
아래의 소스를 좀 더 간략하게 하고픈데여..
완전히 팍 줄일 수 있는 방법이 있을꺼 같은데...
방법을 잘 모르겠습니다...
그리구 아래처럼 하니까.. 쫌 이상하더라구여... ㅜ.ㅜ
느려진다던가... 메세지창이 제때 안뜬다던가하는....
쓰레드에 관한건데여...
도와주세여...



function ThreadFunc : integer ; stdcall;

var I : integer;

begin

  for i := 0 to 100000 do
  begin
    Form1.labData1.Caption := IntToStr(i);
  end;

end;

function ThreadFunc2 : integer ; stdcall;

var I : integer;

begin

  for i := 0 to 100000 do
  begin
    Form1.labData2.Caption := IntToStr(i);
  end;

end;

function ThreadFunc3 : integer ; stdcall;

var I : integer;

begin

  for i := 0 to 100000 do
  begin
    Form1.labData3.Caption := IntToStr(i);
  end;

end;

function ThreadFunc4 : integer ; stdcall;

var I : integer;

begin

  for i := 0 to 100000 do
  begin
    Form1.labData4.Caption := IntToStr(i);
  end;

end;

function ThreadFunc5 : integer ; stdcall;

var I : integer;

begin

  for i := 0 to 100000 do
  begin
    Form1.labData5.Caption := IntToStr(i);
  end;

end;

procedure TForm1.btnMessageClick(Sender: TObject);
begin
  ShowMessage('내가 보여?');
end;

procedure TForm1.btnStart1Click(Sender: TObject);
var tmpbtn : TButton;
    ThreadID : DWord;
    stag : string;
    Dur : integer;
begin
    CreateThread(nil,0,@ThreadFunc,nil,0,ThreadID);
end;

procedure TForm1.btnStart2Click(Sender: TObject);
var ThreadID : DWord;
begin
    CreateThread(nil,0,@ThreadFunc2,nil,0,ThreadID);
end;

procedure TForm1.btnStart3Click(Sender: TObject);
var ThreadID : DWord;
begin
    CreateThread(nil,0,@ThreadFunc3,nil,0,ThreadID);
end;

procedure TForm1.btnStart4Click(Sender: TObject);
var ThreadID : DWord;
begin
    CreateThread(nil,0,@ThreadFunc4,nil,0,ThreadID);
end;

procedure TForm1.btnStart5Click(Sender: TObject);
var ThreadID : DWord;
begin
    CreateThread(nil,0,@ThreadFunc5,nil,0,ThreadID);
end;
2  COMMENTS
  • Profile
    고지범 2002.09.25 06:35
    음... 어차피 각 thread 함수는 비슷하고 Label 만 서로 다르군요...
    type
       TLabelThread = class(TThread)
       private
          FTarget :TLabel;
       protected
          procedure Execute;override;
       public
          constructor Create(a_Target:TLabel);override;
       end;
    implementation
    constructor TLabelThread .Create(a_Target:TLabel);
    begin
       inherited Create(TRUE);
       FTarget := a_Target;
       FreeOnTerminate := TRUE;
       Resume;
    end;

    procedure TLabelThread.Execute;
    var
       I : integer;
    begin
       if not Assigned(FTarget) then exit;
       for i := 0 to 100000 do begin
          FTarget.Caption := IntToStr(i);
          Sleep(10); // <-- 요거이 꼭 필요할 듯 합다...
       end;
    end;
    -------------------------
    procedure TForm1.btnStart1Click(Sender: TObject);
    begin
        TLabelThread.Create(labData1).Create();
    end;

    procedure TForm1.btnStart2Click(Sender: TObject);
    begin
        TLabelThread.Create(labData2).Create();
    end;

    procedure TForm1.btnStart3Click(Sender: TObject);
    begin
        TLabelThread.Create(labData3).Create();
    end;

    procedure TForm1.btnStart4Click(Sender: TObject);
    begin
        TLabelThread.Create(labData4).Create();
    end;

    procedure TForm1.btnStart5Click(Sender: TObject);
    begin
        TLabelThread.Create(labData5).Create();
    end;

    호접 얼큰이었음다.. 꾸뻑 (__)

  • Profile
    박서규 2002.09.25 01:13
    만약 제가 한다면,, 음,,,

    CreateThread를 안쓰고,,,,

    Thread := 쓰레드형.Create(true);
    Thread.Tag := 버튼의 테그;
    Thread.Resume;

    로 한다음에,,,

    쓰레드 내부에서 case문을 이용해서 각각의 캡션에
    숫자를 표현하게 하면 하나의 펑션으로 맹글어 질것
    같군요.. 동일한 코드가 여러개일 필요는 없을것 같습니다..
    님께서는 쓰레드를 맹그는 즉시 실행했기때문에 실제
    쓰레드쪽으로 고유한 값을 못넘겨 줘서 아마도 문제가
    안풀린게 아닌가 생각이 드는군요..



    • 김재환
    • 2002.09.25 06:42
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최연식
    • 2002.09.25 05:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.25 19:07
      Form Open하는 SRC를 올리시죠..그러면 더 쉬울듯 한데... var FormList : TStringList = nil; funct...
    • 최연식
      2002.09.25 20:50
      delphi 6에서 적용해보았는데 에러가 발생하내요!! 에러 내용은 CreateForm이 정의되지 안았다는 내용이었...
    • 최병철
      2002.09.25 17:57
      Group 밴드를 두번 사용해 보세요 그룹 1 - 시작 티별 합계 필드 연결 그룹 2 - 시작 팀별 소계 필드 ...
    • 최용일
      2002.09.25 20:51
      안녕하세요. 최용일입니다. 예제로 드린것은 물리적인 하드웨어를 검색하는게 아니라 논리적인 하드웨어...
    • 델코초
      2006.10.12 22:21
      안녕하세요. 최용일님.(시삽님) 아래와 같이 처리해서 사용을 하고 있는데요, 두자리 컴포트(ex: COM10...
    • 정성훈
      2002.09.25 04:18
      저도 바코드만 2년해봤는데 폰트는 윈도우 폰트가 제일 깨끗하고 잘 찍혀요. Zebra Z4M은 지원되는지 안...
    • 박상은
    • 2002.09.25 02:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.25 03:20
      안녕하세요. 최용일입니다. 함수 프로토타입은 API헬프보시지 마시고 Windows관련 유닛에서 직접찾으세...
    • 버섯
    • 2002.09.25 02:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 임승범
      2002.10.31 07:58
      죄송하지만 이글은 답변이 아니랍니다. 실은 저도 같은 문제로 머리카락이 빠지고 있어서요. sql2k nat...
    • 최병철
      2002.09.25 03:13
      파라독스( paradox )나 MS-SQL등에서 Memo라는 형( Type )이 있는데, 이는 델파이에서 AsBlob등의 형으로...
    • jslove
    • 2002.09.25 00:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 고지범
      2002.09.25 06:35
      음... 어차피 각 thread 함수는 비슷하고 Label 만 서로 다르군요... type    TLabelThread = ...
    • 박서규
      2002.09.25 01:13
      만약 제가 한다면,, 음,,, CreateThread를 안쓰고,,,, Thread := 쓰레드형.Create(true); Thread.T...
    • 최용일
      2002.09.25 01:29
      안녕하세요. 최용일입니다. 흠~ 프로그램 내부에 뭔가 오류가 있는거 같네요... Dispose할때 인자로 ...
    • 도니
    • 2002.09.25 00:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.25 00:15
      아주간단하게는 Form 의 프로퍼티를 이용하세요... Borderlcons의 biMinimize, biMaximize를 이용하시면 ...
    • 도니
      2002.10.01 22:52
      감사감사..^^ 덕분에 아주 쉽게 해결했습니다..^^
    • 한대필
    • 2002.09.25 00:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.25 00:31
      안녕하세요. 최용일입니다. 그냥 for문으로 하나씩 검색해보시면 될겁니다.... [mtbPrint,mtbDelete,...
    • 한대필
      2002.09.25 01:03
      아.. 결국 순서를 알수는 없는 것이군요.. 순서가 필요하다면 다른 방법을 사용해야 하는 것이군요... ...
    • 이영동
    • 2002.09.24 22:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.25 00:32
      안녕하세요. 최용일입니다. 저기 팁란에서 본것같네요. 검색해보세요... ^^ 항상 즐코하세요...
    • 최병철
      2002.09.25 01:19
      자료실과 팁란에 있읍니다
    • 송재진
      2002.09.24 23:38
      ------------------------------------------------- 먼저... Datasource1 은 페이지 1에 DB에디트에 연...
    • 정경철
      2002.09.24 23:04
      DBGrid에 연결된 DataSource를 DBEdit에도 같이 연결 하세요... 그럼..
    • 전형식
      2002.09.24 22:38
      BMP파일을 모두가저가는것은 좀 그렇지 않나요? 차라리 움직이는 GIF파일을 맹그러서 보여주심이.. 알집...
    • 이경남
      2002.09.24 22:48
      토리 사이트가 어딘지 모르겠네요 ㅡ.ㅡ 죄송함다 ㅡ.ㅡ 안녕하세요.. ㅡ.ㅡ 델파이 초보의 길은 ...
    • 최용일
      2002.09.25 00:35
      안녕하세요. 최용일입니다. 토리사이트는 저기 외국추천링크에 있어요. URL은 http://www.torry.net&...
    • 미소나눔
      2002.09.24 21:39
      [실행]에서 dcomcnfg 실행하면 [DCOM 구성 등록정보] 가 뜨는데 거기서 원하시는 DCOM 객체를 선택하시구...
    • 노동옥
    • 2002.09.24 21:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정경철
      2002.09.24 23:12
      zeos라는 컴포넌트가 있습니다. 이것은 상용으로 쓰고 있는 몇가지 지원 됩니다. 제가 알고 있기로는.. M...
    • KDDG_ZZOM
      2002.09.24 22:25
      힘들것같은데... 저도 듣긴들었는데... 상용인것같기도하고... 여기자료실에 있는것같은데... 콤포넌트는...