Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Turbo Pascal PORT Befehl in Delphi (https://www.delphipraxis.net/3905-turbo-pascal-port-befehl-delphi.html)

SirPete 5. Apr 2003 10:57


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?

Daniel B 5. Apr 2003 11:01

Hallo,

es gibt ja noch Assembler.
Delphi-Quellcode:
asm
  in blabla
  out blublo
end;
Damit dürfte es auch gehen.

Grüsse, Daniel :hi:

SirPete 5. Apr 2003 12:52

ok, danke. probiere das mal aus, wäre klasse wenn es klappt.
melde mich dann nochmal.
mfg peter

SirPete 5. Apr 2003 13:46

hi nochmal,
ich kann dazu nichts in der hilfe finden, wie man diese befehle benutzt.
mfg pete

Daniel B 5. Apr 2003 13:56

Hallo,

das könnte so aussehen:
Delphi-Quellcode:
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;
Grüsse, Daniel :hi:

woki 5. Apr 2003 16:03

Zitat:

Programm läuft nur unter windows 98.
wie affig ist das denn, dass die delphi programierer so einen befehl nicht übernehmen?
:shock:
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

SirPete 6. Apr 2003 02:06

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