277
Hogyan lehet lekerdezni az IP cimet Delphiben?
-
#77
Szemre jónak tűnik, bár sok helyen lehetne egyszerűsíteni rajta, de elvileg működőképes. Egyedül a 'halt' nagyon csúnya, azt ablakos környezetben nem szabad használni, ott van helyette az 'exit'. Az 'X' a helyes válasz előtti sor kell legyen (a forrás alapján). Nem lehet, hogy kicsi 'x'-et írsz a fájlba? Mert csak a nagy 'X'-re van figyelés. Az
if s='X'...
sorokat próbáld ki így is:
if upperstr(s)='X'...
Ha így sem megy, küldd el mailben a teljes projektet (összecsomagolva), meg a mintafájlt és alaposabban megnézem.
-
#76
Hey.
Lenne 1 új kérdés :)
Van 1 Quiz ami a kérdéseket 1 txt-ből olvassa be tömbönként 1 tömb = 5 sor. (5 sor = 1 kérdés 3 lehetséges válasz + 1 x)
íme a forrás:
unit Qiuz;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const Path = 'C:\Quiz.txt';
type
TForm5 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
lepes: integer;
M: integer;
implementation
{$R *.dfm}
procedure Kovetkezo;
Var F: TextFile;
S: String;
i: integer;
begin
AssignFile(F,PAth);
{$I-}Reset(f);{$I+}
if IOresult<>0 then ;
inc(lepes);
if lepes-1=m then halt;
for i:=1 to lepes-1 do
begin
readln(f,s);
readln(f,s);
readln(f,s);
readln(f,s);
readln(f,s);
end;
readln(f,s);form5.label1.Caption:=s;
readln(f,s);
if S='X' then begin
form5.button1.tag:=1;
ReadLn(F,s);
form5.button1.Caption:=s;
end
else
begin
form5.button1.tag:=0;
form5.button1.Caption:=s;
end;
readln(f,s);
if S='X' then begin
form5.button2.tag:=1;
ReadLn(F,s);
form5.button2.Caption:=s;
end
else
begin
form5.button2.tag:=0;
form5.button2.Caption:=s;
end;
readln(f,s);
if S='X' then begin
form5.button3.tag:=1;
ReadLn(F,s);
form5.button3.Caption:=s;
end
else
begin
form5.button3.tag:=0;
form5.button3.Caption:=s;
end;
CloseFile(F);
end;
procedure TForm5.FormCreate(Sender: TObject);
var F: TextFile;
S: String;
begin
m:=0;
AssignFile(F,Path);Reset(F);
while not Eof(f) do
begin
readln(f,s);
readln(f,s);
readln(f,s);
readln(f,s);
readln(f,s);
inc(m);
end;
CloseFile(f);
lepes:=0;
kovetkezo;
end;
procedure TForm5.Button1Click(Sender: TObject);
begin
if Button1.Tag=1 then Label2.Caption:='Jó válasz!' else
Label2.Caption:='rossz válasz!';
Kovetkezo;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
if Button2.Tag=1 then Label2.Caption:='Jó válasz!' else
Label2.Caption:='rossz válasz!';
Kovetkezo;
end;
procedure TForm5.Button3Click(Sender: TObject);
begin
if Button3.Tag=1 then Label2.Caption:='Jó válasz!' else
Label2.Caption:='rossz válasz!';
Kovetkezo;
end;
end.
És az lenne a gondom, hogy nicnsen olyan mint jó válasz :/.. az x utáni vagy előtti sor lenne a helyes megoldás ha jól emléxem és az x-et figyelmen kívűl kéne hagynia de nem teszi hanem 1 lehetséges megoldásnak tekinti.
Ha pedig mögé helyezem akkor az x-et akkor a 3 választási lehetőség megvan de nincsen helyes válasz továbbra sem.
Üdv és thx ha valakinek beugrik az a rész ahol gond van. -
#75
Pedig elvileg az "out" és az "in" a helyes szintaktika. Nem inkább az a gond, hogy a D6-ot már NT/2K/XP gépen próbáltátok? Azok már ugyanis elvileg oprendszer szinten szabályozzák (tiltják/engedélyezik) ezeket a parancsokat, biztonsági okokból. A régi port[] tömb is már régen megszűnt, nem használható. Rákerestem a neten, ezt találtam, nekem pont ideillőnek tűnik: katt ide.
-
#74
out helyett más parancsot kell aszem használni ha portról akarsz beolvasni / kiírni. nekem is volt ezzel bajom, de van rá megoldás, mert asm be sikerült kijavítani hogy működjön.
"port" parancs nincs helyette? -
#73
Hali, ez delphi 5 alatt ez ment nekem, delphi 6 alatt pedig sem nekem sem a havernak nem ment. Mi lehet a probléma.
Begin
ASM
Mov Ax,255
Mov Dx,$378
Out Dx,Ax
End;
End;
Mindíg az out parancsnál ál meg, de ha in van akor is ez a probléma.
Ugyanezt csinálja minden porttal. -
#72
Bizonyos fájlműveletek egészen máshogyan működnek Win és Linux alatt, ezt jelzi ez a warning üzenet. Ha csak Win-es, vagy csak Linuxos cuccot írsz, akkor nem kell foglalkozni vele, nem okoz problémát.
-
#71
Ez hol fog problémát jelenteni?
Symbol 'FileSetAttr' is specific to a platform -
#70
Nagyon köszi !
-
blackgamer #69 talán ezek között találsz valamit
Bmp, jpg kép mentése Dbase Blob mezőbe
Delphi + Mysql + Jpg
JPG kép kiolvasása adatbázisból
JPG DBImage-ben -
#68
Hey all
-Újra itt 1 új kérdéssel.
Szakgolgozatom témája 1 biosz-os program és az élőlényekhez szeretnék képet rendelni.
Namármost a jpeg.-formátumot nem tudtuk mególdani, az a probléma, hogy nem tudom beépíteni őket az adatbázisba a bmp-k mérete meg húzós tehát nem célszerű.
Ha valaki tudna javasólni valamit azt megköszöm :)
Üdv
-
#67
Jut eszembe: lehet, hogy ilyen alacsony szintű fájlkezelésnél nincs is kivételkezelés és nem fog működni. Ez esetben a try...except elhagyandó, a for-nak kell a begin és a hibakezelés úgy műxik, mint a Pascal-ban:
osszmeret:=0;
for i:=0 to listbox2.items.count-1 do begin
assignfile(f, listbox2.items[ i]);
{$I-} reset(f, 1); {$I+}
if ioresult=0 then begin
inc(osszmeret, filesize(f)); closefile(f);
end else begin
// hiba volt
...
end;
end;
Az előző kódban pár dolgot elgépeltem, de azt majd kijavítod. :)
-
#66
Ha jól értem, az első részben megpróbálsz sorban megnyitni fájlokat és ha nem sikerül, akkor a hibasfajl-nak true-nak kell lennie. Nos, ez esetben az első try blokk pont nem kivételkezelő, a finally-t cseréld le except-re. :)
A második try..finally blokk emiatt nem is kell, az összméret számlálást emeld át az első try-be és akkor a hibasfajl kezelése is elhagyható. Pl. így:
osszemeret:=0;
for i:=0 to listbox2.items.count-1 do
try
assignfile(f, listbox.items[ i]); reset(f, 1); inc(osszmeret, filesize(f)); closefile(f);
except
// fájl megnyitás nem sikerült, ide jöhetnek mindenféle hibakezelő részek
...
end;
Jut eszembe: ha nem típusos fájlt nyitsz meg, a Reset()-nél kell a blokkméret is, ellenkező esetben az alapértelmezés 128 bájtos, így a FileSize() is azt adja vissza, hány 128 bájtos blokkból áll a fájl.
-
#65
ez kész.. ennyire hülye lennék a kivétel kezeléshez???
for i:=0 to ListBox2.Items.Count-1 do
begin
hibasfajl:=false;
try
AssignFile(f,Listbox2.Items[ i]);
Reset(f);
...
finally
hibasfajl:=true;
end;
if hibasfajl=false then begin
try
..
osszmeret:=osszmeret+Filesize(f);
CloseFile(f);
finally
end; end;
[/center]
a fájlok egy részét sikerül megnyitnia, viszont másoknál invalid filaname-t ír:( nem tetszik neki a 91 karakteres elérési út?? ááá nemértem.
másrészt meg a Filesize -os blokkot nem hatja végre, mi lehet a baja?? -
#64
A Database Manager -es 5let bevált köszi még 1x -
#63
Naggyon köszi !!! -
#62
Úgy értettem: a TListbox.Items már önmagában egy TStrings típus, nincs Strings aleleme (pontosabban igen, van, de ez a default property is, úgyhogy elhagyható (ld. VCL Help)). Az Items bármely eleme tömbként elérhető (Items[ index]), ami stringet ad vissza. Az index max. értéke az Items.Count-1.
Ha nem ezt kérdezted, akkor passz, írd jobban körbe. :)
-
#61
Benne van pl. a Jedi-VCL komponenscsomagban (www.delphi-jedi.org).
De ha nagyon kell, megnézem neked, hogy pontosan mi kell hozzá (most lusta vagyok előkeresni, fejből meg nem tudom :) ).
-
#60
Huhh, hát ez nem egy kétperces kitt-katt dolog, ehhez azért több háttérinfó is kell. Én mysql-t javasolnék otthoni próbálgatásra, viszonylag egyszerűen fel lehet rakni, service-ból fut, vagyis bármikor ki/be kapcsolgatható (persze "élő" kapcsolat esetén nem ajánlott). Delphi-ből is el lehet érni pl. ODBC-n keresztül. Bár ezek a legegyszerűbb dolgok, így is előfordulhat szütykölődés.
Bár a Delphi-nek van erre funkciója is: Database Manager. Ezzel lehet pár beépített típusú adatbázist létrehozni, amelyek nem szerverek ugyan (mivel azt a funkciót ez esetben tkp. a BDE látja el), de szinte mindent ki lehet próbálgatni rajtuk. Az alap SQL funkciókat (create, insert, delete, select, ...) bármely alaptípus ismeri.
-
#59
Közben valószínű, hogy számotokra ez még 1 uncsi kérdés :) :
Tehát még nem hálózatban hanem csak 1 gépen szeretnék sql-ezni delphi-ben.
kaptam 1 ilyet: appserv azt reméltem ezzel tudok 1 stand alone server-t csinálni de nem jött össze valmiért :/
Az lenne a gondom, hogy nincs hova csatlakozni.. és a gépemen szeretnék 1 sql server-t üzemeltetni, hogy legyen ;)
Greetings
-
#58
Köszi
-
#57
#PetruZ: nekem delphi 6 ban vannak az itemsnek elemei :))
kivételként kiíratom üzenetként hogy milyen nevű fájlt nem tud megnyitni, és ott tökéletes a neve :(
hmm talán így látni is fogjuk:
// atw ről így linkelj:
http://users.atw.hu/felhasználónév/kép.jpg -
#56
Hát Így:
Amúgy ezt 1 másik prog-ból lestem el és reménykedem, hogy nálam is beválik..
ha nem jelenne meg a kép : http://www.les.atw.hu/sample/sample.JPG
Köszi mindent !!
üdv -
#55
Nem kell oda a Strings, elég a listbox1.items[ i]. Az items property önmagában egy TStrings típus, neki már nincs ilyen aleleme.
-
#54
újabb probléma :)
ListBox ban vannak elérési útvonalak, fájlok pontos neveivel.
de
AssignFile(f,Listbox2.Items.Strings[ i]);
mindegyik hozzárendelésnél hibár ít ki :(
ékezet nélküli, space nélküli létező fájlok.. -
#53
Milyen infókat? Milyen formában?
-
#52
Hey. Szeretnék 1 olyat, hogy ha az about button-ra klikkelek akkor kiírja az infókat a progról.
(delphi 6)
begin
ShellAbout(Handle, 'Biosoft v Beta 0.4', 'Les', Application.Icon.Handle);
end;
Thx
ps. nem rég kezdtem tehát még nagyon lama vagyok :) -
#51
hmm.
részemről nézegetés következik :) -
#50
Felesleges ezzel vacakolni: vannak már erre megírt komponensek, sztem használd azokat. A torry.net-en biztos találsz ilyet, de pl. a Jedi-VCL-ben is van.
-
#49
első lépésben DDE vel kapcsolódnék a winamphoz, és parancsokat küldözgetnék neki..
-
#48
Mire gondolsz pontosan / mit akarnál csinálni?
-
#47
újabb kérdés..
hogy lehet fájl tipushoz hozzárendelt programot elérni?
DDE kommunikációról tudnál írni? -
#46
ok, thx, találtam:
[i]
procedure TForm1.Save1Click(Sender: TObject);
var
NewFileName: string;
Msg: string;
NewFile: TFileStream;
OldFile: TFileStream;
begin
NewFileName := ExtractFilePath(Application.ExeName) + ExtractFileName(Edit1.Text);
Msg := Format('Copy %s to %s?', [Edit1.Text, NewFileName]);
if MessageDlg(Msg, mtCustom, mbOKCancel, 0) = mrOK then
begin
OldFile := TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyWrite);
try
NewFile := TFileStream.Create(NewFileName, fmCreate or fmShareDenyRead);
try
NewFile.CopyFrom(OldFile, OldFile.Size);
finally
FreeAndNil(NewFile);
end;
finally
FreeAndNil(OldFile);
end;
end;
end; -
#45
Hát, ha nem akarsz sokat vacakolni, akkor írd meg TFileStream-ek használatával (használt a CopyFrom() metódust).
Egyébként ilyen másolásos dolgokra az SHFileOperation() WinAPI függvény is használható, bár ennek a kezelése bonyolultabb. Parancssor hívására meg a CreateProcess() (is) használatos.
-
#44
hogy lehet rendszer parancsot hívni?
pl. System("copy %src %dst")
ilyesmi kéne pl. fájlmásoláshoz..
vagy egyszerűbb saját rutint írni rá blockread-,blockwrite-al? -
#43
megoldottam thx -
#42
2. Timage.Canvas.ClipRect property.
-
#41
1. Rájöttem a screen.width screen.height megadja
2. ? -
#40
1. ez esetben hogyan lehet megtudni az aktuális felbontást?
2. nem nagyítani akarok, csak az a probléma ha nagyobbra méretezem akkor sem rajzol arra a területre, amit a nagyobbra méretezéssel nyertem -
#39
1. Nincs ilyen közvetlen parancs. A Form.Resize event-ben neked kell erről gondoskodni (a Form.Top, Form.Left-et kell állítgatni az új méret és a desktop méret arányában).
2. A ReSize nem egyenlő a ReScale-el, azaz ha átméretezel valamit, az nem gayítja fel a dolgokat. Ha pl. egy TImage-t méretezel, akkor nő a hozzá tartozó Canvas szélessége és magassága is, de ez nem nagyítást jelent. Közvetlen nagyító parancs sincs, ezt is neked kell megírnod.
-
#38
üdv, lenne 2 problémám
kisebbik, ha program futása közben átméretezem az ablakot hogy lehet egy utasítással azt a képernyő közepére tenni ? (mint futtatás előtt Position-poScreenCenter)
nagyobbik probléma, van egy TImage objektum, futás közben a program rajzol rá stb. de ha nagyobbra méretezem az objectumot, akkor is csak az eredeti méret területén tudok rá rajzolni. miért nem méretezi át rendesen ?
kössz a helpet