Lazarus 2.0.10 (2020.07.11.)
Letöltés

file inpout32.dll win10 alatt nem megy... van-e alternatíva

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: inpout32.dll win10 alatt nem megy... van-e alternatíva

A "Projekt / Projekt beállításai" menüpontra kattintva, a megjelenő ablakban a "Projekt beállításai / Alkalmazás" ágat kiválasztva beállíthatod a működéshez szükséges "Futási szint"-et.
Ha "Adminisztrátor"-t adsz meg akkor a windows automatikusan kéri majd a "adminisztrátor" jelszavát az alkalmazás indításakor... (legalábbis elvileg)
#2070

  • robotech
  • robotech profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 28
  • Köszönetek: 0

robotech válaszolt a témára: inpout32.dll win10 alatt nem megy... van-e alternatíva

Szerintem az emberek többsége azért tesz így ahogy én is mert ugyan lenne érdeklődése elmélyülten foglalkozni a programozással, és megismerni a lehetőségeket, de ideje híján átvált teljesítmény orientált üzemmódba, és gyors megoldást keres... nincs ideje elmélyülni (tudom hogy gyenge kifogás, de pl. szombat-vasárnap amikor otthon vagyok én sem akarok a kisfiamnak és a feleségemnek háttal ülni egész délután a monitort bámulva... a munkahelyen meg dolgozni kell (nem főállású programozó vagyok, egyéb műszaki feladataim vannak).

Köszönöm segítséged a DLL-ekkel kapcsolatban, szerencsére jelen esetben a felvázolt problémára lett megoldás, így nem kell kipróbálnom az IO.DLL-t:

Ilyenkor újra és újra bele tudok szerelmesedni a Lazarusba: Kifogástalanúl működik a port írás olvasás win10 alatt is!
Csak: a lefordított exe-t úgy kell futtatni , hogy jobb gomb => run as administrator... még akkor is, ha az ember egyébként a saját gépén adminsztrátor! :-D

Ígérem, hogy ha lessz szabadidőm az általad írtak alapján megpróbálom IO.DLL- el is , a továbbfejlődésem érdekében is!

Üdv!
#2069

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: inpout32.dll win10 alatt nem megy... van-e alternatíva

A DLL hívásoknak két alapvető módja van: az egyik amikor közvetlenül használod az eljáráslistát (ezt a módszert írtam meg, de ha nem található a DLL a programot nem engedi elindulni az operációs rendszer), a másik amikor dinamikusan töltöd be a DLL eljárásainak címeit (ez esetben ha nem található a DLL vagy az egyik eljárás nincs benne akkor hiba/kivétel keletkezik, amit kezelhet az alkalmazásod).
Ez utóbbi az, amit úgy láthatsz, hogy "még egyéb deklarációkat (vagy miket is ) tesznek"...

Ha mindenképpen OOP-vel akarod megoldani a portkezelést akkor jó szolgálatot tehet a Ararat Synapse csomag SynaSer unit-ja. Ezzel a módszerrel az eseménykezelést is meg lehet oldani. A használatáról egy példa már régebb óta megtalálható a letöltőközpontban ...

Csak gondolkodom:
Vajon miért akar mindenki (nem csak Te) "vizuális komponenst" mindenhez, miközben az adott műveleteknek közvetlenül semmi megjelenítenivalója nincs és az így létrehozott kód is csak az alkalmazás méretét növeli?
Tudom, hogy látszólag egyszerűbb a programozás vele, de az biztos, hogy a műveletek tényleges működését nem fogja megérteni aki az ilyen megoldásokat erőlteti...
#2068
Megköszönték: robotech

  • robotech
  • robotech profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 28
  • Köszönetek: 0

robotech válaszolt a témára: inpout32.dll win10 alatt nem megy... van-e alternatíva

tényleg csak onnan veszem, amit a freepascal oldalon írtak az inpout32.dll használatához, látható, hogy még egyéb deklarációkat (vagy miket is ) tesznek meg a dll-el kapcsolatban, hogy működjön...
Még sosem használtam külső DLL-t, komponens telepíteni tudok , komponenseket szoktam csak eddig használni...

Vagy esetleg tudnál ajánlani egy jó vizuális komponenst, ami felmegy Lazarus alá (van LPK fileja)?
#2067

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: inpout32.dll win10 alatt nem megy... van-e alternatíva

Honnan veszed hogy a Lazarus-ban nem használhatsz egyszerű függvényhívásokat?
#2066

  • robotech
  • robotech profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 28
  • Köszönetek: 0

robotech válaszolt a témára: inpout32.dll win10 alatt nem megy... van-e alternatíva

Üdv !

Egy annyi érdekesség van, hogy egyik kollégám mondta, hogy ő C++ - t használva hibátlanúl működteti az inpout32.dll -t használó programját....
Lehet akkor a Lazarusnak van nehézsége nem is a librarynak? 1.2.0 Lazarust használok, mert 1.6-ra nem ment fel egy fontos komponensem (Cport) , vajon érdemes lehet megpróbálni 1.6.0.-val is? vagy nem sok esély van rá hogy műkd,üdik?



Egyébként nem próbáltam az IO.dll-t, de az a félelmem, hogy nem ennyire egyszerű, erre csakis az inpout32.dll használata közötti különbségek miatt következtetek:

Lazaarusban pl: form.create-nél is vannak teendők, így:

"
uses
....dynlibs...

type
TMyForm = class(TForm)
TInp32 = function(Address: SmallInt): SmallInt; stdcall;
TOut32 = procedure(Address: SmallInt; Data: SmallInt); stdcall;
.........
private
{ private declarations }
Inpout32: THandle;
Inp32: TInp32;
Out32: TOut32;
.........
implementation
.........
procedure TMyForm.FormCreate(Sender: TObject);
begin
{$IFDEF WIN32}
Inpout32 := LoadLibrary('inpout32.dll');
if (Inpout32 <> 0) then
begin
// needs overtyping, plain Delphi's @Inp32 = GetProc... leads to compile errors
Inp32 := TInp32(GetProcAddress(Inpout32, 'Inp32'));
if (@Inp32 = nil) then Caption := 'Error';
Out32 := TOut32(GetProcAddress(Inpout32, 'Out32'));
if (@Out32 = nil) then Caption := 'Error';
end
else Caption := 'Error';
{$ENDIF}
end.
"

amíg Delphi esetén valóban lényegesen egyszerűbb az inicializálás, csak a függvényt kell megadni:

"
function Inp32(wAddr:word):byte; stdcall; external 'inpout32.dll';
"

Ezért félek, hogy nem fogom tudni megcsinálni.... vagy talán a {$MODE DELPHI} direktíva valóban megoldja minden gondomat? :-)
#2065

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: inpout32.dll win10 alatt nem megy... van-e alternatíva

Nagyjából így kell kinéznie az IO.DLL hívásaihoz készítendő pascal unit-nak:
{$MODE DELPHI}
 
unit IODLL;
 
interface
 
procedure PortOut(Port : Word; Data : Byte);
procedure PortWordOut(Port : Word; Data : Word);
procedure PortDWordOut(Port : Word; Data : DWord);
function PortIn(Port : Word) : Byte;
function PortWordIn(Port : Word) : Word;
function PortDWordIn(Port : Word) : DWord;
procedure SetPortBit(Port : Word; Bit : Byte);
procedure ClrPortBit(Port : Word; Bit : Byte);
procedure NotPortBit(Port : Word; Bit : Byte);
function GetPortBit(Port : Word; Bit : Byte) : WordBool;
function RightPortShift(Port : Word; Val : WordBool) : WordBool;
function LeftPortShift(Port : Word; Val : WordBool) : WordBool; 
function IsDriverInstalled : Boolean;
 
implementation
 
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
procedure PortWordOut(Port : Word; Data : Word); stdcall; external 'io.dll';
procedure PortDWordOut(Port : Word; Data : DWord); stdcall; external 'io.dll';
function PortIn(Port : Word) : Byte; stdcall; external 'io.dll';
function PortWordIn(Port : Word) : Word; stdcall; external 'io.dll';
function PortDWordIn(Port : Word) : DWord; stdcall; external 'io.dll';
procedure SetPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll';
procedure ClrPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll';
procedure NotPortBit(Port : Word; Bit : Byte); stdcall; external 'io.dll';
function GetPortBit(Port : Word; Bit : Byte) : WordBool; stdcall; external 'io.dll';
function RightPortShift(Port : Word; Val : WordBool) : WordBool; stdcall; external 'io.dll';
function LeftPortShift(Port : Word; Val : WordBool) : WordBool;  stdcall; external 'io.dll';
function IsDriverInstalled : Boolean; stdcall; external 'io.dll';
 
end.
Nem teszteltem, mert nincs io.dll a gépemen ;)
#2064

  • robotech
  • robotech profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 28
  • Köszönetek: 0

robotech létrehozta a témát: inpout32.dll win10 alatt nem megy... van-e alternatíva

Üdv!

A Lazarus honlapján található szösszenet tutorial alapján ([url=http://http://wiki.freepascal.org/Hardware_Access]http://wiki.freepascal.org/Hardware_Access[/url]) készítettem egy szösszenet programot PORT-ba iráshoz, és olvasáshoz...

Letöltöttem továbbá (mert lusta vagyok multiméterrel a gép mogott méregetni (parallel port)) egy parallel port monitor programot is, amivel látható a bekövetkezett változás a porton.
A teszt kedvéért 378 parallel portot vettem szemügyre, és nagy bánatomra a win10-es oprendszeremen nem is müködött a program. újrabootoltam winxp -re , ahol kifogástalanúl megy a dolog... azonban sajnos a programot majd win10 alatt kellene használni.

Lenne valami ötlet win10 alá mivel lenne érdemes próbálkozni, ami legalább úgy van dokumentálva mint a inpout32.dll?
(mondom ezt azért, mert találtam a neten pl: io.dll-t, van dokumentálva, de lazarusról nem ejtenek szót, és a delphi példát meg csak nem lehet olyan egyszerűen betenni lazarusba (dll file használat), kicsit jobban kéne értenem a lazarushoz, hogy ezt meg tudjam tenni http://www.geekhideout.com/iodll.shtml ).

köszönöm előre is a segítséget!
#2063