![]() |
Turbo Pascal PORT Befehl in Delphi
hallo,
ich würde gerne ein programm schreiben, mit dem ich ISA karten ansteuern kann. unter pascal geht das ja ganz einfach über den Port[ADRESSE]:= 255; befehl; nur musste ich jetzt feststellen, dass es diesen befehl garnicht mehr gibt. naja, komisch unter basic 6 gibt es doch immernoch den befehl OUT Adresse, 255 oder nicht? Programm läuft nur unter windows 98. wie affig ist das denn, dass die delphi programierer so einen befehl nicht übernehmen? |
Hallo,
es gibt ja noch Assembler.
Delphi-Quellcode:
Damit dürfte es auch gehen.
asm
in blabla out blublo end; Grüsse, Daniel :hi: |
ok, danke. probiere das mal aus, wäre klasse wenn es klappt.
melde mich dann nochmal. mfg peter |
hi nochmal,
ich kann dazu nichts in der hilfe finden, wie man diese befehle benutzt. mfg pete |
Hallo,
das könnte so aussehen:
Delphi-Quellcode:
Grüsse, Daniel :hi:
function PortIn(IOAddr : WORD) : BYTE;
begin asm mov DX, IOAddr in AL, DX mov result, AL end; end; procedure PortOut(IOAddr : WORD; Data : BYTE); begin asm mov DX, IOAddr mov AL, Data out DX, AL end; end; |
Zitat:
Gar nicht. Mit Delphi schreibt man Windows-Programme und unter Windows (wie jedem anderen ernstzunehmende Betriebssystem auch) sind direkte Hardwarezugriffe den Treibern vorbehalten. DOS basierte Systeme (Win31, Win9x ...) lassen diesen Zugriff nur aus kompatibilitätsgründen zu alter Software zu, was ein Grund für die Instatbilität dieser Systeme ist. Unter den NT-basierenden Windowsversionen führt die CPU einen Portzugriff gar nicht erst aus, du bekommst stattdessen eine Exception. Ein solcher Portzugriff wird nur einem Treiber gestattet. Wäre auch nicht gerade eine Ruhmesblatt für Delphi, wenn es eine schlecht programmierte Software zuläßt, die nur aufgrund von Unzulänglichkeiten von Win9x hier läuft, und die dann unter NT, 2000, XP sofort knallt. Und sobald die Unzulänglichkeiten von Win9x beseitigt sind, wird es dann gar nicht mehr laufen, und Du mußt das Problenm dann doch wieder sauber lösen. Wer auf Hardware zugreift, möchte weit mehr als nur über Grundkenntnisse verfügen, bei Fehlern kann diese oder auch andere Hardware schnell zerstört sein. Du wärest nicht der erste, der sich ein neues Motherboard kaufen muß, weil er eine Zahl verwechselt hat. Prinzipiell gibt es fertige Bibliotheken, z.B. auf Torry, mit denen man über einen Universaltreiber auf beliebige Portadressen zugreifen kann. Wie gesagt, damit kannst du dann auch genügend Mist bauen, von Abstürzen bis zur Zerstörung von Hardware. Falls hier, wie zu befürchten, jemand mit Assembler kommt, solche Zugriffe laufen nur unter Win9x, wo es eben noch keine saubere Trennung zwischen Treiber und Anwendungsebene gibt. Gruß Wolfgang |
danke für eure hilfe, das mit dem asembler läuft super! :) hab lange nach ne lösung gesucht, und für eine zwecke reicht es vollkommen! :)
:dancer: @woki, ich verstehe schon wie du das meinst, aber ich hab hier nur 16 verschiedene adressen, die ich direkt als constante einrichte, denke nciht das dabei was schief läuft. ausserden bisschen schwund ist immer ;) wie dem auch sein, sind halt nur so steuerkarten, und da hab ich halt vor mir ne steuersoftware für windows zu schreiben, da es nur uralte langsame dosprogramme gibt. jedenfalls funzt es gut. mfg peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz