Pascal Delay oder ähnliches

Ich brauche eine delay procedure.
Es gibt in der Crt unit ja eine aber ich probiere erstens ohne
vorgegebene units zu arbeiten und ausserdem hat sie ja den bekannten runtime error 200 division by zero.
Kann mir da irgendjemand was schicken, hab schon nachgemachte crt units gesehen, aber denen fehlte immer die delay procedure.

Vielleicht kann ich es auch
so machen

gettime(zeit1); {Jaja hat mehr parameter ich weiss}
repeat
gettime(zeit2); {aber auch nur mit DOS unit}
until zeit2=zeit1+verzoegerung;

Da müsste allerdings noch was in die schleife was wenn die
millisekunden 100 überschreiten bei 0 weitermacht.
Aber das ist wohl eine „Dumme Möglichkeit“

Danke schonmal im Vorraus.
MfG Roman

Hi,
ich hätte da ne Prozedur, die mit der Realtimeclock arbeitet, allerdings auf ganze Sekunden zurechtgeschnitten ist.
Das kann man ändern. Die maximale Genauigkeit ist allerdings auf ca. 1/18 Sekunde beschränkt, weil die RTC mit dieser Genauigkeit arbeitet…
Genaugenommen wird an Speicherstelle $40:blush:6C ein word jede 18,2tel Sekunde (wenn ich mich nicht täusche…) um 1 erhöht.

PROCEDURE WaitSek(anz: word);
{ Wartet eine bestimmte Anzahl von Sekunden }
var tim: word absolute $40:blush:6C; 
now, beg: word;
begin
 beg := (Longint(3600) \* longint(tim)) shr 16;
 repeat
 now := (Longint(3600) \* longint(tim)) shr 16;
 until now \>= beg+anz;
end;

Dieser Quelltext multipliziert die Zahl an der Speicherstelle mit 3600 und schiebt anschließend die Bits der Zahl um 16 Bits nach rechts (shr 16). Das ist gleichbedeutend mit „geteilt durch 65536“, nur wesentlich schneller. Beide Operationen zusammen ergeben „geteilt durch 18,2044444“, nur ist mein Quelltext meines Wissens nach sehr viel schneller für den PC zu rechnen als /18,204444…

Ich hoffe Dir hilft das weiter; auf 1/18,2tel Sekunden genau ist relativ einfach umzuschreiben, aber genauer geht’s damit nicht!

Timo

Man man man
Genau sowas habe ich gesucht.
Danke dir!
Funktioniert auch super!!!
Kann mir hier noch jemand erklären woher ich
weiss das in diesem Speicherbereich die RTC steckt
warum sie diese nur auf 1/18.2 geeicht haben.
Was passiert bei einem Overflow?
Aber eigentlich gehe ich nicht davon aus das bei einem longint
ein overflow passiert :wink:
Nein nein, hab mal nachgerechnet das dauert ein paar Jahre bis
der overflow kommt, solange laufen nur Linux Rechner.
Bei C++ kann man glaube ich abfragen wieviel
prozessortakte seit Programmstart schon vergangen sind,
geht das auch in Pascal?
In meinem Gerätemanager habe ich zwei interessante Geräte entdeckt,
„System CMOS/Echtzeituhr“
Ist das das was ich mit dem Quellcode anspreche?
und „Systemzeitgeber“ was ist das?
kann ich das ansprechen? Nüzt mir das was?

Wo mir gerade so viele schlaue Leute zuhören musste ich das mal loswerden.

Genauso würde ich gerne wissen unter welchen Speicheradressen
die Tastatureingaben gespeichert sind,
Die einzelnen Bildschirmkoordinanen(text oder Grafikmodus)
Aber beantwortet mir das lieber nicht alles sonst
Geht mein Selbstbewusstsein zugrunde weil ich es nicht verstehe

MfG Roman *Der sehr gespannt auf antworten wartet*

Ups (von wegen kein Overflow)
Hehe hab mich vertan,
hab mir den Quelltext mal genau angesehen,
das ist ja gar kein Long int sondern
dem Quellcode nach nur Word.
Da ist dann der Overflow nach exakt einer Stunde
eingetreten, was auch die Eichung auf 18,2
erklärt.

Der Quelltext müsste demnach eine Stunde lang hängen
bleiben wenn 65535 erreicht wurden.
Täusche ich mich?

Hi,
Ich habe eine Unit in Pascal, mit der man Millisekunden messen kann. Wer interessiert ist, dem schicke ich es gerne zu. Müßte ich halt nur suchen…
Chris

SWAG
Hallo,

wenn Du wirklich viel mit Pascal machst, dann empfehle ich Dir das SWAG Archiv runterzuladen… Das sind mehrere MB an Texten und Sourcen sortiert und durchsuchbar nur zum Thema Pascal…

Ob es die offiziellen Seiten noch gibt, weiss ich nicht, aber auf grossen FTP-Archiven gibt es die bestimmt noch… Frag einfach mal eine Suchmaschine Deines Vertrauens…

Arne

Manchmal fragt man sich wirklich, was Borl. in die Units gepackt hat, damit die so gross werden…

Es gibt ein (DOS-)Programm namens helppc, alles über BIOS, DOS, Assembler, C-Grundlagen und das noch relativ übersichtlich, oder ein Buch über Computerhardware, auch vor-Pentium, die BIOS-Adressen sind gleichgeblieben, es gab mal eins, da waren sämtliche BIOS und DOS Aufrufe aufgelistet, gibt’s bestimmt auch mehrfach, und auch in helppc (Suchmaschine anwerfen).

Ciao Lutz

Danke und Borland Units
Ich schau mir das mal an, danke
ich kann denke ich schon ganz gut programmieren,
aber wie die ganzen leute immer
wissen wie sie in den Grafikmodus kommen ohne dafür eine
Unit zu benutzen.
Und wo die ganzen Sachen wie Tastatureingaben
Uhrzeit u.s.w. stehen hat mich schon eine Weile beschäftigt.

Warum z.B. wenn ich
uses Crt;
schreibe aber gar nicht die delay procedure verwende
trotzdem runtime error 200 kommt?
Fragen über fragen.
Aber vielleicht wird dir delay unit initialisiert, und dabei
passiert der Fehler!?!

Hallo,

wenn Du wirklich viel mit Pascal machst, dann empfehle ich Dir
das SWAG Archiv runterzuladen… Das sind mehrere MB an Texten
und Sourcen sortiert und durchsuchbar nur zum Thema Pascal…

Hehe ja ich mach viel mit Pascal,
und jetzt muss ich wegen der Schule Delphi lernen,
aber das ist ja wirklich easy!

Ob es die offiziellen Seiten noch gibt, weiss ich nicht, aber
auf grossen FTP-Archiven gibt es die bestimmt noch… Frag
einfach mal eine Suchmaschine Deines Vertrauens…

Stirbt die einzige Programmiersprache die ich kann aus? *snief*
Vertraue niemandem, aber bei Suchmaschinen mach ich ne Asnahme.

Warum z.B. wenn ich
uses Crt;
schreibe aber gar nicht die delay procedure verwende
trotzdem runtime error 200 kommt?
Aber vielleicht wird dir delay unit initialisiert, und dabei
passiert der Fehler!?!

Genau so. Du kannst in einer Unit eine Initialisierung zur Startzeit vorgeben, indem Du am Ende einen begin … end.-Block hinschreibst. Ist zum Beispiel sinnvoll, um alle SVGA-Modi der Grafikkarte abzufragen, oder einen normalen BGI-Modus zu setzen, dann mit RestoreTextMode in den Text zu wechseln, und dann im Hauptprogramm nur die analoge Umschaltfunktion zu benutzen,…

Ciao Lutz

z.B. http://jinai.nyu.edu:9999/classes/machineOrg/helppc/

Hallo,

Stirbt die einzige Programmiersprache die ich kann aus?
*snief*

ist schon tot :smile:

aber wenn Inprise Delphi wirklich nach Linux portiert, dann wird es wieder etwas besser… Und Delphi ist so 'ne Art Visual-Pascal. Kann man sich als Pascaler dran gewoehnen…

Viel Spass…

arne

Delphi…
Für mich lebt sie im moment noch.
Aber wahrscheinlich nicht mehr lange.

Im moment leren ich in der Schule Delphi, Ich hatte
mir den Borland C++ Builder Standart gekauft
und hofe jetzt das ich in der Schule lerne mit den ganzen Objekten umzugehen, und dann besser mit dem Builder C++ lernen
zu können.

Hab das was du mir gesagt hast auch gefunden und kann was damit anfangen.

Danke

Hey ich habe gefunden was du mir gesagt hattest,
das ist echt gut, ich muss da zwar erstmal durchsteigen.
Aber das muss sein.
Ich hatte z.B nur mal gesehen das man in den MCGA mode
mit

???, 13
int 10

oder so ähnlich kommt, aber darin stehen ja alle modes
und viele interrupts.

Ich danke dir genauso wie dem „DasBaby“!!!