AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Turbo Pascal PORT Befehl in Delphi

Ein Thema von SirPete · begonnen am 5. Apr 2003 · letzter Beitrag vom 6. Apr 2003
Antwort Antwort
SirPete

Registriert seit: 6. Sep 2002
16 Beiträge
 
#1

Turbo Pascal PORT Befehl in Delphi

  Alt 5. Apr 2003, 10:57
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?
Mit freundlichen Grüßen Peter
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 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
  Mit Zitat antworten Zitat
SirPete

Registriert seit: 6. Sep 2002
16 Beiträge
 
#3
  Alt 5. Apr 2003, 12:52
ok, danke. probiere das mal aus, wäre klasse wenn es klappt.
melde mich dann nochmal.
mfg peter
Mit freundlichen Grüßen Peter
  Mit Zitat antworten Zitat
SirPete

Registriert seit: 6. Sep 2002
16 Beiträge
 
#4
  Alt 5. Apr 2003, 13:46
hi nochmal,
ich kann dazu nichts in der hilfe finden, wie man diese befehle benutzt.
mfg pete
Mit freundlichen Grüßen Peter
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 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
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#6
  Alt 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?

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
  Mit Zitat antworten Zitat
SirPete

Registriert seit: 6. Sep 2002
16 Beiträge
 
#7
  Alt 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!


@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
Mit freundlichen Grüßen Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz