Delphi

Jelentkezz be a hozzászóláshoz.

hmhm
#177

stdcall; external 'io.dll'; az eltérés
remélem így tudod majd használni!

{ V Á Á } silkroad: lvl 11

hmhm
#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

{ V Á Á } silkroad: lvl 11

hmhm
#175
de sajna kb ugyan az mint a tiéd ..

{ V Á Á } silkroad: lvl 11

hmhm
#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.

{ V Á Á } silkroad: lvl 11

af27
#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;

AF27

#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)

af27
#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.

AF27

af27
#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

AF27

hmhm
#169
egy megfelelõ io.dll -t kell szerezned, azzal sima pascalból is megy

{ V Á Á } silkroad: lvl 11

PetruZ
#168
Pl. torry.net - VCL - System - Port access: legalul van egy ZLPortIO komponens, ami freeware és azt írja, tud LPT-t is.
#167
keress rá componens pack-ot, én Com port-hoz kerestem és találtam is jókat, nézzél szét

af27
#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.

AF27

PetruZ
#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.).
hmhm
#164
és még egy.

TBitMap képét milyen függvényével tudom törölni?

{ V Á Á } silkroad: lvl 11

hmhm
#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..

{ V Á Á } silkroad: lvl 11

hmhm
#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.

{ V Á Á } silkroad: lvl 11

PetruZ
#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).
#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?

PetruZ
#159
Akkor írd meg if...then-re, ugyanez. :)
#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

PetruZ
#157
A baj az, hogy bár a megoldás mûködik, nem szabályos. Halmazoknál sohasem lehetsz biztos abban, hogy milyen sorrendû a tárolás, egy halmaz elemeinek elvileg nincs olyan indexe, mint egy tömbnek.
A kód azért mûködik rosszul, mert a TMyAlignment-bõl kivett elem más sorrendben szerepel a TAlignment-ben. Ha n=1, akkor a TMA-ból a taCenter jön, ami viszont a TA-ban a taRightJustify, stb. Ez a megoldás így nem fog mûködni.
Sztem egyszerûbb, szebb és olvashatóbb lenne case-t használni, mondjuk így:

(type nem kell)
...
n:=(n+1) mod 3;
case n of
0: ugroL.Alignment:=taLeftJustify;
1, -1: ugroL.Alignment:=taCenter;
2: ugroL.Alignment:=taRightJustify;
end;
...

Ez mûködik, kipróbáltam.
Így magadat sem kavarod meg. Még egyszer: halmazokban nincs index elem, így a rájuk történõ hivatkozás némileg szerencse, némileg biztos háttértudás kérdése. Az, hogy a Layout-nál mûködött, azért van, mert ott véletlenül "jó" a halmaz megalkotási sorrendje, de szerintem azt is írd át.
#156
ez volt a függõleges mozgás kódja

begin
n:=(n+1)mod 3;
ugroL.Layout:=TTextLayout(n);
if (n=2) then n:=-n;
end;

ez meg a vízszintesé (ahogy épp most van, de nem megy)

type
TAlignment = (taLeftJustify,taCenter,taRightJustify);

procedure TUgralo.ugroLClick(Sender: TObject);
begin
n:=(n+1) mod 3;
ugroL.Alignment:=TAlignment(TMyAlignment(n));
if n=2 then n:=-n
end;

PetruZ
#155
Másold már be azt a kódrészletet (csak az ugroLClick-et, ami ezt csinálja).
#154
hmm megírtam a progit, de így is ugy van, hogy bal oldalt áll az objektum, de kattintásra jobbra ugrik, utána középre, majd balra, és megint jobboldalra. pedig ugy kellene, hogy bal-közép-jobb-közép-bal. szóval nem értem. amíg a függõleges mozgás ciklusa volt megírva, addig nem volt baj.

#153
gondolom lehagytam valamit, mert még csak most kezdek foglalkozni a Delphivel, ez meg házi volt a fõsulira. de hát ugy tanul az ember ha kérdez...
amugy kösz a segitséget!

PetruZ
#152
Hát igen, ez így nem fog mûködni, lehagytad a typecast-ot. Pl. így:

ugroL.Alignment:=Talignment(TMyAlignment(n));

A magyarázathoz nézd meg az Object Pascal halmazmûveletekrõl szóló részét.
#151
elnéztem, a TMyAlignment a halmaz neve, de akkor meg azt irja, hogy incompatible types 'TaLignment', 'TMyAlignment'.

#150
kösz! sokat segítettél!
de van még egy kis gond. megírtam a saját halmazt, arra hivatkozok, de azt irja, hogy undeclaired identifier (a *al jelölt sorban). így néz ki a kód:

implementation

{$R *.DFM}

var
n:integer;
type
TAlignment = (taLeftJustify,taCenter,taRightJustify);

procedure TUgralo.ugroLClick(Sender: TObject);
begin
n:=(n+1) mod 3;
* ugroL.Alignment:=TMyAlignment(n);

end;

PetruZ
#149
Csinálj egy saját halmazt, mondjuk...

type
TMyAlignment = (taLeftJustify, taCenter, taRightJustify);

...és ezt használd.
#148
és az alignemtet ha kattintásra változtatom, megvan adva ugyebár az n, az megy 0-2 ig, és a szövegnek bal-közép-jobb-ként kén ugrálnia, de az alignment sorrendje meg ugy van, hogy közép-bal-jobb. ezt hogy lehet megváltoztatni?

PetruZ
#147
RTFM: csak simán TAlignment() a halmaz neve.
#146
hali! kellene nekem kis segítség, talán tudtok segíteni. van egy kódom megírva, amely egy karaktert kattintásra függõlegesen mozgat ugy, hogy a szövegnek a layout-ja (függõleges helyzete) változik. a ciklus így néz ki:

begin
n:=(n+1)mod 3;
ugroL.Layout:=TTextLayout(n);
if (n=2) then n:=-n;
end;

így mûködik ez a program.

azonban ha átírom úgy, hogy a vízszintes hely változzon, tehát az alignmentje, ami így néz ki:

begin
n:=(n+1)mod 3;
ugroL.Alignment:=TTextAlignment(n);
if (n=2) then n:=-n;
end;

akkor nem mûködik, mert az írja a delphi, hogy:

Undeclaired Identifier.

mi lehet a gond??

#145
Hello!
Már megoldottam a delphis problémámat.

#144
Hello!

Bocs az amatör kérdésért, de fontos lenne, hogy választ kapjak. Delphi 7-ben console applicationben pascal progit írtam. Lefuttatom, vagy nem csinál semmit, vagy runtime errort ír ki. Sima turbo pascalban ami szintén borland lefut jól. Egyébként amd procim van. Lehet ez a gond, és mi lenne a megoldás.
Köszi

maozedong
#143
A Dock az mire való?

Fájl objektumot szeretnék tudni fogadni, de elég lenne csak az elérési útja.
JetAudio lejatszasi listajabol athuzok egy szamot pl. notepadba, akkor az megnyitja mint szoveg fajl.. athuzom a word be ott megjelenik mint egy OLE konténer.
Ezt kéne fogadnia a programnak.

Resurrection!

PetruZ
#142
Az a TObject csak egy pointer tárolója, felülcast-olással elvileg bármi lehet belõle. Ha pl. egy memo-ból húzol át szöveget, akkor a TMemo(Sender).lines -ben vannak a sorok. Ha edit-bõl, akkor TEdit(Sender).text-ben van a szöveg. A többféle forrásból származó drop kezelése már bonyolultabb, de a demók között azt hiszem, van rá példa.
De ha nem akarsz vele szöszölni, vannak ingyenes komponensek erre a célra, szinte minden Delphi-s site-on találsz belõlük.
maozedong
#141

Drag and Drop ot hogyan lehet lekezelni?
Eseménynél kapok egy olyan paramétert hogy Source ami TObject tipusu. Ha szoveget huzok at, akkor ebbol hogy tudom kinyerni a szoveget?

Resurrection!

PetruZ
#140
Help - FindFirst(), FindNext(), FindClose() függvények. Example, meg demó is van hozzá. Nagyon egyszerû a kezelése.
ncswork
#139
köszi sikerült :9

most azlenne a kérdésem hogy egy könyvtáron belül hogy tudom lekérdezni a fájlneveket, alkönyvtárakat, . ilyesmi

PetruZ
#138
Ha jól emlékszem, csak var-ral tudod átadni.
ncswork
#137
Szeretnék szubrutinnak paraméterként fájl változót átvinni, de nem engedi :(
Unit4.pas(50): File type not allowed here

[negativ] Les
#136
Köszi mindenkinek az akkori segítséget !
Megvan a szakvizsgám :) Programozó lettem :D

...:Dream as if you\'ll live forever, Live as if you\'ll die today:... ICQ: 313-755-340

PetruZ
#135
Ez is egy megoldás, bár elég durva. :)
#134
Köszi! Sikerült megoldani!

1. Unit mentése másként
2. Form átnevezése
3. A régi unit hozzáadása a project-hez
PetruZ
#133
Még valami: a form_masolat nem örökli a form1 pillanatnyi property-jeit, csak a kreálásakor meglévõ és beállított alapértékeket, a késõbb módosítottakat már nem fogja követni (mivel azok a példányban módosulnak, nem az osztályban)! De minden más benne lesz.
PetruZ
#132
A form unit-jának interface része leírja a Form osztályt, de a példányt nem (ill. csak ha automatikus a kreálás). Ebbõl az osztályból te akárhány példányt származtathatsz, azok mind az osztály tulajdonságaival fognak bírni, de önállóan mûködnek, semmi más közük nem lesz egymáshoz (hacsak te nem írsz ilyet).
Tehát pl. van egy TForm1 az unit1-ben, plusz a var részben egy Form1: TForm1 (gyakran, de nem feltételnül). Akármelyik unit akármelyik részében képezhetsz egy új TForm1 példányt pl. a form_masolat:=TForm1.Create(self); v. form_masolat:=TForm1.Create(nil); sorral, és ezután a form_masolat ugyanúgy használható, mint a Form1. Ha nem az unit1-ben csinálod a másolatot, akkor az uses részben fel kell tüntetni az unit1-et is (ahonnan majd a definíciókat veszi).
#131
Sziasztok!

Hogy lehet azt elérni a Delphi5 alatt, hogy egy project-ben már meglévõ form-ot
egy másnéven megduplázzak és minden eljárás, esemény maradjon úgy mint a régiben.
Gabesz amd64
#130
hali!

hogyan lehet egy DBgrid egész tartalmát kinyomtatni?
a Qreoprtig eljutottam az bejön meg a oszlop nevek is csak a mezõben található adatokat nem írja ki..
mit kell tennem?

DFI UT NF590 SLI-M2R/G,4x1Gb Geil Black Dragon,4200+ AM2, H2o Cooling ,Dell E207WFP, MSI 8800GTS 640Mb Oc,TT Armor,Tagan 600Watt,320Gb Seagate

[negativ] Les
#129
Hát akkor nincs mit tenni belevetem magam az Indy-be :D

...:Dream as if you\'ll live forever, Live as if you\'ll die today:... ICQ: 313-755-340

PetruZ
#128
Úgy emlékszem, a 6-osban egymás mellett benne voltak a Borland- meg az Indy-féle hálózati komponensek, végül a 7-esbe már csak ez utóbbinak a kibõvített verziója került bele. Sztem az Indy-s ezerszer jobb is (a helpje is bõvebb), valamint egyben frissíthetõ a csomag a fejlesztõk oldaláról. :)