Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Funkčnost příkladů s knihy 1001 tipů a triků pro delphi

Dobrý den
Potřeboval bych poradit v Delphi 7 a to když opíši nějaký příklad s výše uvedené knihy tak při překladu nebo kompilaci tak se vyskytují chyby, zejména příklady s části INTERNET snažím se vkládat všechny komponenty co jsou zapotřebí a pořád to tomu překladači nestačí,jsou v té knize funkční příklady nebo ne?
předem děkuji za rady

Předmět Autor Datum
V té knize jsou funkční příklady. Jen je třeba vědět, že do uses se musí přidat unity, které jsou v…
Jan Fiala 30.06.2007 18:17
Jan Fiala
Ten příklad je na 708 Indy,Traceroute na str.338,v tomto příkladě my třeba pomůžete ale když budu po…
Víťa 30.06.2007 19:17
Víťa
V tech prikladech nejsou potreba "externi" unity, pokud to neni v prikladu primo zmineno. Spis je tr…
Jan Fiala 30.06.2007 19:55
Jan Fiala
já mám 2 aktualizované vydání teto knihy na té straně je něco jiného k tomu příkladu je tam napsáno…
Víťa 30.06.2007 20:22
Víťa
Komonenty z InDy jsou soucasti Delphi. Najdes je na nejake palete komponent. Pokud mas verzi Delphi…
Jan Fiala 30.06.2007 21:27
Jan Fiala
Kde dělám chybu v tomto příkladě **(tučné písmo v to řádku to vyhazuje chybu za běhu to znamená když…
Víťa 30.06.2007 21:58
Víťa
Jakou chybu? Ja bohuzel na tvou obrazovku nevidim :-(
Jan Fiala 30.06.2007 22:08
Jan Fiala
Tak chyba je taková Project Ping.exe raised exception class EAccessViolation with message'Access vio…
Víťa 01.07.2007 18:55
Víťa
A to tvoje lstReplies je co? Kde ten objekt vytvaris a deklarujes? nový
Jan Fiala 01.07.2007 19:44
Jan Fiala
var Form1: TForm1; lstReplies:Tlistbox; implementation ... .. . nový
Víťa 01.07.2007 19:50
Víťa
A vytvareny je kde? Pokud je to ListBox, mel by byt jako komponenta, polozena na formulari a ne nekd… nový
Jan Fiala 01.07.2007 20:33
Jan Fiala
Pochopitelně na formuláři taky mám umístěnou komponentu ListBox nový
Víťa 01.07.2007 20:42
Víťa
Je uplne jedno, ze mas "nejaky" ListBox umisteny na formulari. Jmenuje se ten umisteny na formulari… nový
Jan Fiala 01.07.2007 21:14
Jan Fiala
Bingo !!!! děkuji už to funguje ještě bych chtěl poradit s příkladem 708 Indy,Traceroute na straně 3… nový
Víťa 01.07.2007 21:34
Víťa
Jen dodam ze TlistBox nemusi mit polozenou na formulari, staci ji vytvorit balbla := TlistBox.create… nový
virus 02.07.2007 00:13
virus
Ještě jsi zapomněl nastavit ListBox.Parent := Form1 (jinak to bude řvát), musíš nastavit pozice na f… nový
Jan Fiala 02.07.2007 07:08
Jan Fiala
A co bys s tím příkladem chtěl poradit? Na formulář musíš položit příslušnout InDy komponentu. nový
Jan Fiala 02.07.2007 15:21
Jan Fiala
Jaké komponenty tam mám jmenovitě dát krom té v předchozím příkladě protože není mi jasné tyhle dva… nový
Víťa 02.07.2007 15:54
Víťa
Pouzite komponenty na formu mas hned pod deklaraci tridy formu: type TForm1 = class(TForm) {tady je… nový
Jan Fiala 03.07.2007 12:17
Jan Fiala
Toto je můj opsaný zatím kod unit ping_; interface uses Windows, Messages, SysUtils, Variants, Clas… nový
Víťa 03.07.2007 12:46
Víťa
Stačí se podívat na deklaraci v první části formuláře: Ping: TIdIcmpClient; Ted jsem si otevrel kni… nový
Jan Fiala 02.07.2007 15:59
Jan Fiala
zas jsem narazil na problém v příkladu aItem prosím o help PS já to píši postupně jakmile se za tečk… nový
Víťa 02.07.2007 19:33
Víťa
Opakuji. Napřed si projdi uplne zaklady programovani v Delphi, delarace, strukturu unity. Pak se pou… nový
Jan Fiala 02.07.2007 19:40
Jan Fiala
za tečkou se neobjevují žádné možnosti zatím se mi objevili až do řádku aItem hlásí to Unable to inv… nový
Víťa 02.07.2007 19:54
Víťa
Protože máš v kódu předtím chyby. Pokud spustíš kompilaci, kompilátor ti řekne, co a na jakém řádku… nový
Jan Fiala 02.07.2007 22:02
Jan Fiala
Možná dělám chybu protože to tam dávám var aIten:TListBox místo var aIten:TListItem já ten objekt T… nový
Víťa 03.07.2007 11:53
Víťa
Ne vse jsou komponenty. Nemuses misto TListItem deklarovat TListBox. Představ si, že přijdeš do obch… nový
Jan Fiala 03.07.2007 15:01
Jan Fiala
už se mi to podařilo rozjet já jsem dělal chybu v tom jak píšete protože jsem nemohl najít komponent… nový
Víťa 03.07.2007 16:38
Víťa
Dobrý den velice jste mi zatím pomohl už se mi to podařilo rozjet samotný program a momentálně řeším… poslední
Víťa 04.07.2007 15:18
Víťa
napište mi prosím link na ten serial na zive díky. nový
Víťa 03.07.2007 14:18
Víťa
Je ke stažení i offline verze. tipy-a-triky-v-delphi.wz.cz nový
karel 03.07.2007 14:31
karel
Len vseobecne: Priklady (v knihach, ale nielen v knihach) nie su vzdy kompletne programy. Priklad sl… nový
MM.. 02.07.2007 19:19
MM..

V té knize jsou funkční příklady. Jen je třeba vědět, že do uses se musí přidat unity, které jsou v příkladech použity a popsány třeba na začátu kapitoly o internetu.
Pokud napíšeš konkrétní příklad, pomůžeme

Ten příklad je na 708 Indy,Traceroute na str.338,v tomto příkladě my třeba pomůžete ale když budu potřebovat jiný příklad tak kde mám získat informace které ten který příklad potřebuje jaké unity, sice tam je v úvodu adresa webu delphi-jedi.org ale já neumím skoro vůbec anglicky díky předem.

V tech prikladech nejsou potreba "externi" unity, pokud to neni v prikladu primo zmineno. Spis je treba pridat do USES nejakou unitu z InDy, popr. z WinAPI, napr. URLMon apod.

Priklad s InDy a Tracert mam na strane 248 pod cislem 647.
Jaka je konkretni chyba prekladace?

Komonenty z InDy jsou soucasti Delphi. Najdes je na nejake palete komponent. Pokud mas verzi Delphi Personal, zrejme si je budes muset stahnout ze internetu od vyrobce. Jsou zdarma.
Jakmile polozis tu komponentu na formular, prida se ti prislusna unita do USES.

Kde dělám chybu v tomto příkladě **(tučné písmo v to řádku to vyhazuje chybu za běhu to znamená když kliknu na buton)**
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdRawBase, IdRawClient,
IdIcmpClient, StdCtrls;

type
TForm1 = class(TForm)
Ping: TIdIcmpClient;
ListBox1: TListBox;
Button1: TButton;
procedure PingReply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
lstReplies:Tlistbox;
implementation

{$R *.dfm}

procedure TForm1.PingReply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
var sTime:string;
begin
if (AReplyStatus.MsRoundTripTime=0) then
sTime:='<1'
else
sTime:='=';
lstReplies.Items.Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms',[AReplyStatus.BytesReceived,AReplyStatus.FromI pAddress,AReplyStatus.SequenceId,AReplyStatus.TimeT oLive,sTime,AReplyStatus.MsRoundTripTime]));
end;
procedure TForm1.Button1Click(Sender: TObject);
var cnt:integer;
begin
Ping.Host:='www.cpress.cz';
for cnt :=1 to 4 do
begin
Ping.Ping;
application.ProcessMessages;
sleep(1000);
end;

end;

end.

A vytvareny je kde?
Pokud je to ListBox, mel by byt jako komponenta, polozena na formulari a ne nekde ve VAR. Visualni komponenty potrebuji byt nekde umisteny. Pokud to chces jen nevizualne zachytit, pouzij TStringList, ktery ovsem musis vytvorit.

Je uplne jedno, ze mas "nejaky" ListBox umisteny na formulari.
Jmenuje se ten umisteny na formulari lstReplies? Zrejme ne.

Abys mohl pristupvat k nejakemu objektu, musis ten objekt vytvorit. To muzes udelat bud v dobe navrhu tim, ze jej polozis na formular nebo za behu programu zavolanim konstruktoru Create.

Problem u tebe nebude v knize s priklady, ale v zakladnich znalostnich nedostatcich.
Doporucoval bych zacit serialem o Delphi, ktery vychazel na serveru Zive.cz, kde se to bralo od uplnych zacatku a pomohlo by ti to pochopit, o co vlastne v OOP jde.

Pouzite komponenty na formu mas hned pod deklaraci tridy formu:

type
TForm1 = class(TForm)
{tady je seznam komponent, polozenych na formu}

lvTrace bude v tom priklade definovano jako TListView.

procedura, pokud ji pouzivas pouze na tom formulari se definuje v sekci private, pokud ji chces volat z nejakeho jineho formulare (objektu), tak v sekci public:

TForm1 = class(TForm)
...
private
  procedure Trace;
...
public
...

Opet ti pripominam, ze bez uplne zakladnich znalosti nic neudelas. Chces ridit auto a ani nevis, co je to volant a radici paka.

Toto je můj opsaný zatím kod

unit ping_;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdRawBase, IdRawClient,
  IdIcmpClient, StdCtrls;
type
  TForm1 = class(TForm)
    Ping: TIdIcmpClient;
    lstReplies: TListBox;
    Edit1: TEdit;
    Button1: TButton;
    CheckBox1: TCheckBox;
    lvtrace: TListBox;
    IdIcmpClient1: TIdIcmpClient;
    procedure PingReply(ASender: TComponent;
      const AReplyStatus: TReplyStatus);
    procedure Button1Click(Sender: TObject);

    procedure CheckBox1Click(Sender: TObject);
  private
  procedure Trace;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  lstReplies:Tlistbox;
implementation

{$R *.dfm}
procedure Tform1.Trace;
var
TTL,MaxHops:integer;
Reached:boolean;
aitem:TlistItem;
begin
TTL:=0;
MaxHops:=30;
Reached:=false;
lvTrace.Items.Clear;
repeat
     inc(TTl);
     IdIcmpClient1.Host:='www.seznam.cz';
     IdIcmpClient1.TTL:=TTL;
     IdIcmpClient1.ReceiveTimeout:=5000;
     IdIcmpClient1.Ping;

ale co to za objekt TListItem to nemohu najít v záložkách ?
opět díky za pomoc

Stačí se podívat na deklaraci v první části formuláře:
Ping: TIdIcmpClient;

Ted jsem si otevrel knizku s priklady a ctu:
Poslouzi nam k tomu ta sama komponenta IdICMPClient...

TForm1.Trace je procedura. Musis v private casti formulare deklarovat:
procedure Trace;

lvTrace.Items.Clear je smazani polozek nejake komponenty. Podle nazvu soudim, ze jde o ListView. Takze na formular pridas TListView, nastavis jej do stylu Report a pojmenujes jej jako lvTrace.

Opakuji. Napřed si projdi uplne zaklady programovani v Delphi, delarace, strukturu unity. Pak se poustej do prikladu. Opet ti doporucm serial o Delphi na Zive.

Tva aItem je deklarovana v procedure Trace v sekci VAR.
Bohuzel z popisu: narazil jsem na problém v příkladu aItem prosím o help neni mozne poznat, v cem tvuj problem spociva. Vesteca koule je opet v oprave, venku je skoro tma, takze na tvuj monitor nevidim.

Možná dělám chybu protože to tam dávám var aIten:TListBox místo var aIten:TListItem já ten objekt TListItem nemohu najít co to je zač a kde tu komponentu nebo co to je najdu ve které záložce a neexistuje nějaký vyhledávač na ty komponenty v prostředí delphi děkuji za pomoc

Ne vse jsou komponenty.
Nemuses misto TListItem deklarovat TListBox. Představ si, že přijdeš do obchodu a budeš chtít DVD -R médium. Prodavač ti místo toho podá 3,5" disketu. Budeš spokojený? Asi ne. Zrovna tak nebude spokojený překladač, když mu nadeklaruješ TListBox místo TListItem. I když název těch objektů začíná stejně, opravdu jde o různé věci.

Delphi obsahuje i help (mozna jsi to dosud nezjistil). Kdyz v rejstriku napises TListItem, dozvis se o co jde.

už se mi to podařilo rozjet já jsem dělal chybu v tom jak píšete protože jsem nemohl najít komponentu ListView a ta má vlastnost ListItem , a tetka mi to vypisuje čísla od 1 až 12.. to je nějaká blbost v čem je chyba zas? díky za radu

Dobrý den velice jste mi zatím pomohl už se mi to podařilo rozjet samotný program a momentálně řeším správný chod programu pří krokování se mi v proměnné IdIcmpclient.ReplyStatus.ReplyStatusType objeví stav rsErrorTTLExceeded pochopitelně mi to na to návěstí skočí, poradíte prosím opět v čem je chyba předem díky.

Len vseobecne: Priklady (v knihach, ale nielen v knihach) nie su vzdy kompletne programy. Priklad sluzi na objasnenie pouzitia konkretnej veci, nie ako program na opisanie a skompilovanie.
Pri zachovani poradia:
1.)pochopit
2.)pouzit
nezvyknu nastavat problemy. Skus to v tom poradi.

Zpět do poradny Odpovědět na původní otázku Nahoru