ďťż

Ładny brzuch

Witam,
Niedawno zainteresowałem się programowaniem w Delphi i zacząłem przeglądać dawne numery Eksperta w poszukiwaniu porad dotyczących tego języka. Ostatnio próbowałem napisać komunikator opisany w numerze 6/2004. Serwer jakoś się udał, ale przy próbie kompilacji klienta pojawiają się błędy:
    l[Error] ektkunit.pas(14): Undeclared identifier: 'TPackage'
    l
    l[Error] ektkunit.pas(63): ')' expected but identifier 'UserNick' found
    l
    l[Error] ektkunit.pas(63): Missing operator or semicolon
    l
    l[Error] ektkunit.pas(72): Undeclared identifier: 'ClientRecive'
    l
    l[Error] ektkunit.pas(73): Missing operator or semicolon
    l
    l[Error] ektkunit.pas(74): Missing operator or semicolon
    l
    l[Error] ektkunit.pas(85): Missing operator or semicolon
    l
    l[Error] ektkunit.pas(86): Missing operator or semicolonl

Nie wiem co z tym zrobić, na wszelki wypadek załączam też cały kod:

unit ektkunit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient; type TClientOnReceive = class(TThread) private ActiveP: TPackage; procedure Action; protected procedure Execute; override; end; TForm1 = class(TForm) wiadomosci: TMemo; adresip: TEdit; nick: TEdit; dowyslania: TEdit; polacz: TButton; wyslij: TButton; IdTCPClient1: TIdTCPClient; Label1: TLabel; Label2: TLabel; procedure polaczClick(Sender: TObject); procedure wyslijClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TClientOnReceive.Execute; begin while not Terminated do begin if not Form1.IdTCPClient1.Connected then Terminate else try Form1.IdTCPClient1.ReadBuffer(ActiveP, SizeOf (ActiveP)); Synchronize(Action); except end; end; end; procedure TClientOnReceive.Action; begin Form1.wiadomosci.Lines.Add (ActiveP.UserNick + ' pisze: ' + ActiveP.Txt); end; procedure TForm1.polaczClick(Sender: TObject); begin try IdTCPClient1.Host := adresip.Text; IdTCPClient1.Port := 6000; IdTCPClient1.Connect(10000); ClientRecive := TClientOnReceive.Create(True); ClientRecive.FreeOnTerminate:=True; ClientRecive.Resume; except on E: Exception do MessageDlg ('polaczenie niemozliwe:'+#13+E.Message, mtError, [mbOk], 0); end; end; procedure TForm1.wyslijClick(Sender: TObject); var SendPackage : TPackage; begin SendPackage.UserNick := nick.Text; SendPackage.Txt := dowyslania.Text; IdTCPClient1.WriteBuffer (SendPackage, SizeOf (SendPackage), true); end; end.

Zmieniłem tylko numer portu i nazwę całego pliku, ale to chyba nie ma w tym przypadku wpływu.
Czy ktoś wie gdzie jest błąd? Ewentualnie proszę o działający kod, jeśli ktoś też kiedyś zrobił ten program.
Wiem, że minęło trochę czasu (prawie 4 lata!), ale mam nadzieję, że jednak ktoś mi pomoże.

Z góry dziękuję.




Witam,
Niedawno zainteresowałem się programowaniem w Delphi i zacząłem przeglądać dawne numery Eksperta w poszukiwaniu porad dotyczących tego języka. Ostatnio próbowałem napisać komunikator opisany w numerze 6/2004. .

To błąd. powinieneś zacząć od nauki podstaw a nie od takiego programu. tak niczego się nie nauczysz.


To błąd. powinieneś zacząć od nauki podstaw a nie od takiego programu. tak niczego się nie nauczysz.

:o Ale ja zacząłem od nauki podstaw i coś tam już wiem, parę programów napisałem, a teraz chciałem nauczyć się czegoś o Indy.

[Error] ektkunit.pas(72): Undeclared identifier: 'ClientRecive'

Tu poprostu literowka Receive ma byc

A co do błedu z TPackage to trzeba było to zadeklarowac w type... to bylo napewno bo sam to kiedys robilem
.....
Sprawdz literówki i bedzie gut....



Poprawienie recive na receive nic nie zmienia, błędy te same. Co do TPackage to teoretycznie to powinno być już zadeklarowane w uses, więc nie wiem co robić. Jak to kiedyś robiłeś to masz kod źródłowy? A jak nie, to nie wiesz skąd mogę wziąć, żeby porównać?


Poprawienie recive na receive nic nie zmienia, błędy te same. Co do TPackage to teoretycznie to powinno być już zadeklarowane w uses, więc nie wiem co robić. Jak to kiedyś robiłeś to masz kod źródłowy? A jak nie, to nie wiesz skąd mogę wziąć, żeby porównać? Teoretycznie TPackage sie nie deklaruje w uses, tylko po type, bo to jest nazwa klasy.

A pochwal sie nam ile czasu poswieciles na zglebienie podstaw? Tydzien? Dwa?
Komunikator mozesz probowac pisac po kilku miesiacach od rozpoczecia nauki, bo w ten sposob, pytajac sie co chwile o cos, nie napiszesz tego programu nigdy. No i jeszcze dochodzi kwestia praw autorskich. Podpiszesz sie pod kodem ktory ktos Ci wklei?

Polecalbym zainteresowanie sie gazeta, w niej jest chyba wszystko opisane, a tak wogole to na plycie zwykle byly kody ktore sie kompilowaly i dzialaly...

Co do praw autorskich to nie mam zamiaru się pod tym podpisywać. Chcę po prostu wiedzieć jak zaimplementować w programie komunikację sieciową, bo przyda mi się to w następnych programach. Gazetą to chyba się zainteresowałem, stąd cały temat. Co do cd to u mnie nie da się znaleść czteroletniej płyty, więc ta opcja odpada. Czy mogę po prostu wiedzieć, co z tym kodem co mam jest nie tak?


Czy mogę po prostu wiedzieć, co z tym kodem co mam jest nie tak? Du ju spik inglisz?

Komunikaty wszystko mowia.

[Error] ektkunit.pas(14): Undeclared identifier: 'TPackage' -> nie masz deklaracji obiektu typu TPackage
[Error] ektkunit.pas(63): ')' expected but identifier 'UserNick' found -> zapewne a duzo parametrow podales, bo kompilator oczekiwal zamkniecia nawiasu a znalazl parametr UserNick
[Error] ektkunit.pas(63): Missing operator or semicolon -> tu pewnie srednik a brak
[Error] ektkunit.pas(72): Undeclared identifier: 'ClientRecive' -> kompilator nie wie co to ClientRecive


Du ju spik inglisz?

Komunikaty wszystko mowia.

[Error] ektkunit.pas(14): Undeclared identifier: 'TPackage' -> nie masz deklaracji obiektu typu TPackage
[Error] ektkunit.pas(63): ')' expected but identifier 'UserNick' found -> zapewne a duzo parametrow podales, bo kompilator oczekiwal zamkniecia nawiasu a znalazl parametr UserNick
[Error] ektkunit.pas(63): Missing operator or semicolon -> tu pewnie srednik a brak
[Error] ektkunit.pas(72): Undeclared identifier: 'ClientRecive' -> kompilator nie wie co to ClientRecive


Łooo, tyle to też wiem. Ale co z tym zrobić? Bo z TPackage to pewny nie jestem, ale reszta jest tak jak ma być.

OK, trochę to zajęło, ale udało mi się rozwiązać te problemiki samemu :D

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •