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 .
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. ;)
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.
Bez zobaczenia kodu źródłowego niczego nie jestem w stanie doradzić.
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.
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.