277
Hogyan lehet lekerdezni az IP cimet Delphiben?
-
torokvmit #197 Hát ez nem pont delphi de szerintem a delphisek tudnak segíteni nekem, előre is köszönöm
Próbléma:
Pascalban kellene írnom olyan programot mely kiírja saját forráskódját 1 az 1 ben pliz segítsetek. -
#196
Hát igen. Ez mind amit elmondtatok tény és való!
Én jelenleg ismerek egy embert, aki a mai napig unszkodik a delphi hallatán.
Igaz ő CNC gépeket javít, de lassan már európai hírnévre tesz szert.
Az utolsó érdekes akciója az volt, hogy egy hibás gép rendszerének a tartalmát kinyomtatta leporellóra (kb 3,5-4cm vastag köteg lett, kiterítette egy fojosón és négykézlább elkezdett az ASM kód fölött masírozni.
Mindez egy kicsit maradinak és őskorinak tünik, de ő meg todta oldani azt a problémát, amelyet a gép gyártójának a mérnökei nem tudtak. (ja, ő nem mérnök, havi 70ért hülyére dolgozza magát).
Ez is csak példa volt arra: HOGY A ZSENIALITÁS NEM MÁS, MINT JÓZAN PARASZTI ÉSZ ÜNNEPI RUHÁBAN!!!
-
#195
Mondjuk az 500x az túlzás :), a modern procik esetében már nem olyan jelentős az asm sebességelőnye, plusz még a compilerek is fejlődtek, nagyon szép kódokat tudnak már azok is.
-
#194
és 500 gyorsabb lesz az asm :) -
#193
De az a 20 soros Delphi programocska lesz mondjuk alsó hangon 100k (konzolnál), vagy 500k (grafikus verzióban), míg az assembly-s 5000 sor monduk max. 40-50k. :)
-
#192
amit delphiben 20 sor megcsinálni, azt assemblyben 5000 :) -
#191
Csak egy vicc, már biztos mind hallottátok(de feleveleníteni nem rossz):
"Amit nem lehet megcsinálni FORTRANban, azt meg lehet csinálni assemblyben. Amit nem lehet megcsinálni assemblyben, azt nem lehet megcsinálni."
-
#190
Tökmindegy, akár Delphiben is megadhatod hexa-ként, csak használd a megfelelő prefixet ('$' jel). Mivel nem használtad, a fordító decimálisnak értelmezte (azaz a '378' mindig decimális lesz, míg a '$378' mindig hexa). Mivel betű nem volt benne, még csak ki sem akadt rajta. Ami teljesen normális működés.
A program nem a programozója akarata, hanem a kódban leírtak szerint fog működni, ez mindig igaz. :)
-
#189
Kösz mindenkinek a segitséget.
Tökéletesen mükszik.
-
#188
lemaradtam :p -
#187
888 al kipróbáltad ?
annak kell lennie. A képen HEXA érték van, a Word típusú változódnak meg decimális értéket adsz..
378 h
888 d
1101111000 b
-
#186
4 napos teljes mértékű szenvedéstől szabadítottal meg.
Hálam örökké üldözni fog.
Az volt nálam az alap probléma, hogy dos-ból megmaradt, hogy hexadecimálisan kellet megadni a port címet. Valószínüleg ha tudnék olvasni, akkor hamar rájövök, hogy it decimálisan.
Az a lényeg, hogy köszi mindenkinek aki segített!





-
#185
Egébként kösz szépen. -
#184
-
#183
Nem tudom... nem tűnik fel, hogy te most nem az LPT portra, hanem máshová (történetesen a diszkvezérlőnek) küldözgetsz jeleket? A 378 az decimális érték, ami hexa 0x17A-val egyenlő. Az LPT port viszont a hexa 0x378-on van, ami decimálisan 888-as érték.
-
#182
Kösz szépen. -
#181
holnap megteszem. -
#180
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
procedure PortOut(Port:Word; Data:Byte); stdcall; external 'io.dll';
function PortIn(Port:Word):byte; stdcall; external 'io.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
PortOut(378,255);
end;
end.
és ha katt akkor reboot! -
#179
vagy az is jó lenne, ha küldenél nekem mellé még egy progit is amiben benne van, hogy te hogyan használod a portout-tot (vagy legalább azt a sort).
Azt tudom, hogy miért indúl újra vindózom(védelmi hiba, kékhalál olyasmi sebességgel, hogy ki sem bírja jelezni + reboot).
-
#178
procedure PortOut(Port:Word; Data:Byte); stdcall; external 'io.dll';
Ugyebár, én ezt megtettem, beraktak agy button alá, de mikor rákatt, akkor újraindúl a gép.
Ez van a button alatt:
PortOut(378,255);
És így nem megy, a PortIn megy, de az out nem.
Küld már el a te io.dll-led! [email protected]
-
#177
stdcall; external 'io.dll'; az eltérés
remélem így tudod majd használni! -
#176
Chizman válasza halmai (11:50) hozzászólására előzmény | privát | 2004.07.22. 15:25 | válasz
Helló!
Delphi-ben qrva egyszerű, és XP alatt is müxik! Kell a project könyvtárba beraknod egy io.dll nevű progit. A lényeg, hogy a progid elérje!
Majd:
implementation
procedure PortOut(Port:Word; Data:Byte); stdcall; external 'io.dll';
function PortIn(Port:Word):byte; stdcall; external 'io.dll';
A KIS éS NAGY BETŰK FONTOSAK!!!
És már használatra kész is! A párhuzamos portnál nem volt semmi gond.
Én 93LC46-os eeprom-ot programozok vele közvetlenül az LPT-n XP(!) alatt!
A soros portnál már mellé kellett raknom a CPort-ot is, de csak inicializálásra használom. Máshogy nekem nem működött, de a CPort-nak vanna saját Properties-ei, és lehet vegyesen használni a PortIn, PortOut-tal!
Csőváz!http://www.prog.hu/tarsalgo/Periferiak-programozasa.htm?fid=427&ec=25 -
#175
de sajna kb ugyan az mint a tiéd .. -
#174
egy példa progit találtam, bár ez borland pascalos:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Port: Word;
Data: Byte;
procedure PortOut (Port: Word; Data: Byte); stdcall; external 'C:\io\io.dll';
begin
{ TODO -oUser -cConsole Main : Insert code here }
Port:=888;
Data:=3;
PortOut (Port, Data);
writeln;
writeln;
Writeln (' Kimeneti adat a paralel porton = ',Data);
readln
end. -
#173
Hai. most már végkép ki vok!
Letöltöttem az io.dll-t, a DLPortIO-t és még mindíg nem megy.
A io.dll az jó lenne, de csak a port állapotának lekérdezéséhez, mivel ez is ASM-t használ. Ez nem sok ASM-ben én is le tudnám kezelni, de a vindóz egyből beleszól, hogy nehogymá...
Valaki küldjön már egy páldát arra, hogy hogyan lehetne megvalósítani delpiben ezt a kis pascan rutint:
Port[$378] := 255;
-
blackgamer #172 TWebBrowser komponensnek meg lehet adni hogy képeket ne jelenítsen meg?
illetve, hogy a Firefox-ot használja, mivel az gyorsabb (lehet hülyeséget írok)
-
#171
Megvan a komponens, de újabb probléma merült fel. Nem tudom telepíteni.
Fatal error: Unit2.dcu not fund.
Ezzel most mit kezdjek? Naggyából követtem a readme-t. -
#170
Megtaláltam az io.dll-t.
egy teljesen egyedi módon(szerintem így kell alapon) kipróbáltam, de van egy kis gond velel.
function PortIn(Port : Word) : Byte; external 'io.dll'
procedure TForm1.Button1Click(Sender: TObject);
Var b : Byte;
begin
b := PortIn($378);
end;
Ez van a forrásban, de ha a gomra kattintok, akkor a gép (windózhoz méltóan), se szó, se beszé, újranindúl.
Ha tudnátok segíteni nekem abban, hogy hogyan tudom az io.dll-t használni, akkor megköszönném.
THX -
#169
egy megfelelő io.dll -t kell szerezned, azzal sima pascalból is megy -
#168
Pl. torry.net - VCL - System - Port access: legalul van egy ZLPortIO komponens, ami freeware és azt írja, tud LPT-t is. -
blackgamer #167 keress rá componens pack-ot, én Com port-hoz kerestem és találtam is jókat, nézzél szét -
#166
Üdvözletem minden delphisnek!
1 kérdésem lenne, nagyon fontos lenne, mivel már 1 éve próbálok megoldást keresni.
Port (lpt) programozás delphiben, NT alapú oprendszer alatt!!!!!
Már mindent próbáltam, hogy direkt hozzáféréssel menjen, de nem jött össze.
-
#165
A létrehozás azért nem fog működni, mert a típust röptében hoznád létre. Csinálj egy másik típust is a type részben, pl.:
tlepestomb = array of lepes;
Az eljárás fejében az array of lepes helyett tlepestomb legyen, ha pedig var-ral hivatkozol rá, akkor a hívó számára is ismert legyen (azaz létezzen a változó, amit átadsz).
(A Help-ben: dynamic arrays, open array parameters)
TBitmap: RTFM, a TBitmap.Canvas : TCanvas környéke (FillRect, stb.).
-
#164
és még egy.
TBitMap képét milyen függvényével tudom törölni? -
#163
Help!
dinamikus tombot hogy kell allokalni?
type tablatomb= array[0..9,0..9]of byte;
lepes = record
x,y : integer; // az idealis lepes pozicioja
suly : integer; // az x,y hoz tartozo lepes mennyire jo
jobb, bal, le, fol, // a lepes mennyit es milyen iranyban forgat
jle, jfel, ble, bfel : integer;
szulo : byte; // az elozo szintrol honnan szarmazik
tabla : tablatomb; // lepeshez tartozo tabla
end;
function lep_add(Var klep:array of lepes;Var n:integer):boolean;
begin
inc(n);
setlength(klep,n);
end;
erre itt a vegen kiirja hogy nem megfelelo tipus.. -
#162
a sorrend kicsit hibás..
procedure TUgralo.ugroLClick(Sender: TObject);
begin
n:=(n+1) mod 3;
//-- innen
if n=0 then ugroL.Alignment:=taLeftJustify;
if n=1 then ugroL.Alignment:=taCenter;
if n=2 then ugroL.Alignment:=taRightJustify;
//-- ide
if n=2 then
begin
n:=-n;
valami.caption:='lál';
end;
end;
Pedig ezt az n=2 dolgot az előző kódrészletekben jól írtad.
-
#161
Figyu', itt már alapvető gondok vannak, ha ilyen kérdések merülnek fel benned. De komolyan. Sztem kezdd újra ezt az egész programozás dolgot, mert valahol átugrottál pár lépést, és most látszik ennek az eredménye... Én meg nem fogok itt Delphi tanfolyamot tartani (mert amit kérdezel, már az).
-
zero_cool51 #160 köszi, majdnem megvan.
igy néz ki:
procedure TUgralo.ugroLClick(Sender: TObject);
begin
n:=(n+1) mod 3;
if n=2 then n:=-n;
if n=0 then ugroL.Alignment:=taLeftJustify;
if n=1 then ugroL.Alignment:=taCenter;
if n=2 then ugroL.Alignment:=taRightJustify;
end;
de az a baj, hogy nem megy el jobbra. hanem középen megáll.
hi kihagyon az első if-et, akkor megy.
valamint hogy lehet azt megirni, hogy ha 2-nél van, akkor változtassa meg a captionjét? az if mögé írva and-el elválasztva, ugy nem megy. még egy if kell oda? -
#159
Akkor írd meg if...then-re, ugyanez. :)
-
zero_cool51 #158 kösz, megpróbálom. csak kíváncsi vagyok mit szól a tanár hozzá, mert a case-t még nem vettük.. :P
meglátom hogy fog működni