Jak używać Sleep bez dołączania modułu Crt?

0

Witam,pytanie tak jak w temacie,gdyż przeszukałem niemalże cały internet - a z racji tego że mam mało czasu,to nie potrafię znaleźć przykładu używania funkcji sleep.
Jestem zupełnie zielony w FreePascal,ale znam dość dobrze podstawy c++,więc jak ktoś poda jakiś trudniejszy przykład to i tak byłbym wdzięczny.Pozdrawiam.
Btw: Pytam o użytek funkcji sleep bez using crt,ponieważ dla delay - mój program już nie chciał działać jak go odpalałem z rozszerzenia .pas .

2

Przecież procedura Sleep nie znajduje się w module Crt (w niej jest procedura Delay), więc w czym problem? Dodaj moduł Windows do uses i używaj, albo zaimportuj ją samemu:

procedure Sleep(dwMilliseconds: DWORD); external 'kernel32' name 'Sleep';

i w ogóle nie będziesz musiał dodawać żadnego modułu. ;)

0

Dziękuję,działa. Ale niestety po użyciu jej raz-to program zastyga po napisaniu jednej literki ( mój program ma ogólnie drukować napis po x milisekundach ) .

Jednakże,gdy użyję uses sysutils,to napis drukuje się tak jak powinien.

tak czy inaczej problem na rozwiązanie znalazłem,ale ciekawi mnie to - że przy użyciu procedury nie ma takiego samego efektu co uses sysutils,może się czepiam,ale wg. mnie powinno działać tak samo.
Ale z racji tego że problem na rozwiązanie znalazłem,to dziękuję raz jeszcze.

0

Bez zobaczenia kodu źródłowego niczego nie jestem w stanie doradzić.

0

oto kod źródłowy.

program druk;

procedure Sleep(dwMilliseconds: DWORD); external 'kernel32' name 'Sleep';

var

napis: string;
i: integer;

begin

napis:='Hello World';
for i:=1 to length(napis) do
begin
        write(napis[i]);
        Sleep(100);
end;

readln;
end.

1

Dość dziwnie to wygląda – u mnie tak samo nie działa jak należy. Pewnie oprócz importu trzeba by zrobić coś jeszcze, ale raczej nie problem dodać do uses modułu Windows i skorzystać już z gotowego importu:

program Druk;
uses
  Windows;
var
  Napis: String;
  I: Integer;
begin
  Napis:='Hello World';

  for I := 1 to Length(Napis) do
  begin
    Write(Napis[I]);
    Sleep(100);
  end;

  ReadLn();
end.

Taki kod działa prawidłowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1