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?
Jan Fiala 01.07.2007 19:44
Jan Fiala
var Form1: TForm1; lstReplies:Tlistbox; implementation ... .. .
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…
Jan Fiala 01.07.2007 20:33
Jan Fiala
Pochopitelně na formuláři taky mám umístěnou komponentu ListBox
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…
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…
Víťa 01.07.2007 21:34
Víťa
Jen dodam ze TlistBox nemusi mit polozenou na formulari, staci ji vytvorit balbla := TlistBox.create…
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…
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.
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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.
Víťa 03.07.2007 14:18
Víťa
Je ke stažení i offline verze. tipy-a-triky-v-delphi.wz.cz
karel 03.07.2007 14:31
karel
Len vseobecne: Priklady (v knihach, ale nielen v knihach) nie su vzdy kompletne programy. Priklad sl…
MM.. 02.07.2007 19:19
MM..

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.

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.

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.

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