Autor Téma: Nejake nejasnosti ohledne zacatku programovani v Delphi.  (Přečteno 3642 krát)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3004
  • Karma: 108
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #30 kdy: 04-12-2021, 16:59:31 »
Mozna ze lepsi design by byl davat TButtony vedle tech TEditu a tim ten vedlejsi TEdit zrusit ?
Jak bych to zhruba mohl udelat ?

Asi by bylo spravne si udelat pole tech Teditu, ale nevim jak to provest ani jaka je syntaxe pro pole v Delphi.

Ten predchozi prispevek je spatne na vsech moznych frontach. Mozna kdyby sis precetl to co jsem ti poslal, coz je vec co jsem napsal specialne pro zacatecniky tak jsme jinde.

Pole:
var
   pole: array[1..20] of TButton;
nebo
   dynamicke pole: array of TButton;

V tvem pripade by bylo vhodnejsi pouzit list, tj:

var
  bts: TList<TButton>;

ve form Create:
  bts:= TList<TButton>.Create;
ve form Destroy:
  FreeAndNil(bts);

  tmp: TButton; // <<<<<<<< lokalni
begin
  tmp := TButton.Create(Self);
  tmp.Parent := Self;
  tmp.SetBounds(10, 10, 40, 40);
  tmp.Caption := 'Hey jude';
  bts.Add(tmp); // pridame do seznamu buttonu

// pak  treba odstranit prvni:
  bts[0].Free; // uvolnime buttton a on se pres parenta odstrani
  bts.Delete(0); // odstranime ho z listu
 
 
Embarcadero MVP - Czech republic

Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #31 kdy: 04-12-2021, 17:15:28 »
var
  bts: TList<TButton>;

nejde nadefinovat, je podtrzeene cervene:

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3004
  • Karma: 108
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #32 kdy: 04-12-2021, 17:38:06 »
Na formulari jsou dve tlacitka, Button1 a Button2 - jejich obsluhy mas nize. Prvni tlacitko pridava tlacitka, druhe je odebira. Chybel ti v uses Generics.Collections

Kód: Delphi [Vybrat]
  1. unit Unit7;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Generics.Collections;
  8.  
  9. type
  10.   TForm7 = class(TForm)
  11.     Button1: TButton;
  12.     Button2: TButton;
  13.     procedure Button1Click(Sender: TObject);
  14.     procedure FormCreate(Sender: TObject);
  15.     procedure FormDestroy(Sender: TObject);
  16.     procedure Button2Click(Sender: TObject);
  17.   private
  18.     { Private declarations }
  19.   public
  20.     { Public declarations }
  21.     bts: TList<TButton>;
  22.  
  23.   end;
  24.  
  25. var
  26.   Form7: TForm7;
  27.  
  28. implementation
  29.  
  30. {$R *.dfm}
  31.  
  32. procedure TForm7.Button1Click(Sender: TObject);
  33. var
  34.   tmp: TButton; // <<<<<<<< lokalni
  35. begin
  36.   tmp := TButton.Create(Self);
  37.   tmp.Parent := Self;
  38.   tmp.SetBounds(bts.Count*50, 10, 40, 40);
  39.   tmp.Caption := 'Hey jude';
  40.   bts.Add(tmp); // pridame do seznamu buttonu
  41. end;
  42.  
  43. procedure TForm7.Button2Click(Sender: TObject);
  44. begin
  45.   if bts.Count > 0 then
  46.   begin
  47.      bts[0].Free;
  48.      bts.Delete(0);
  49.   end;
  50. end;
  51.  
  52. procedure TForm7.FormCreate(Sender: TObject);
  53. begin
  54.   bts := TList<TButton>.Create;
  55. end;
  56.  
  57. procedure TForm7.FormDestroy(Sender: TObject);
  58. begin
  59.   FreeAndNil(bts);
  60. end;
  61.  
  62. end.
  63.  
Embarcadero MVP - Czech republic

Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #33 kdy: 04-12-2021, 18:40:56 »
Po velkem usili jsem dospel k tomuto ale nefunguje, haze to chybu:

Kód: Delphi [Vybrat]
  1.                 unit Unit5;
  2.  
  3.     interface
  4.  
  5.     uses
  6.       Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.       Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Generics.Collections;
  8.  
  9.     type
  10.       TForm5 = class(TForm)
  11.         Button1: TButton;
  12.         Button2: TButton;
  13.          Edit2: TEdit;
  14.         procedure Edit1Change(Sender: TObject);
  15.         procedure Button1Click(Sender: TObject);
  16.         procedure FormCreate(Sender: TObject);
  17.         procedure FormDestroy(Sender: TObject);
  18.         procedure Button2Click(Sender: TObject);
  19.       private
  20.         { Private declarations }
  21.       public
  22.         { Public declarations }
  23.         bts: TList<TButton>;
  24.  
  25.       end;
  26.  
  27.     var
  28.       Form5: TForm5;
  29.  
  30.     implementation
  31.  
  32.     {$R *.dfm}
  33.  
  34.     procedure TForm5.Button1Click(Sender: TObject);
  35.     var
  36.       tmp: TButton; // <<<<<<<< lokalni
  37.     begin
  38.       tmp := TButton.Create(Self);
  39.       tmp.Parent := Self;
  40.       tmp.SetBounds(bts.Count*50, 10, 40, 40);
  41.       tmp.Caption := 'Hey jude';
  42.       bts.Add(tmp); // pridame do seznamu buttonu
  43.     end;
  44.  
  45.     procedure TForm5.Button2Click(Sender: TObject);
  46.     begin
  47.       if bts.Count > 0 then
  48.       begin
  49.          bts[0].Free;
  50.          bts.Delete(0);
  51.       end;
  52.     end;
  53.  
  54.     procedure TForm5.FormCreate(Sender: TObject);
  55.     begin
  56.       bts := TList<TButton>.Create;
  57.     end;
  58.  
  59.     procedure TForm5.FormDestroy(Sender: TObject);
  60.     begin
  61.       FreeAndNil(bts);
  62.     end;
  63.  
  64. procedure TForm5.Edit1Change(Sender: TObject);
  65. begin
  66. Edit2.Text:='33';
  67. end;
  68.  
  69.     end.
  70.  
  71.  
  72.  

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #34 kdy: 04-12-2021, 19:40:22 »
Ja Ti nerozumiem. Poslal som Ti ukážku funkčnú ukážku. Je stiahnutá dvakrát. Som presvedčený, že Radek si ju nestiahol. Tam so Ti aj vysvetľoval zásadné veci!!!
  • spojazdnil si ju?
  • prečo si tam navrhnuté riešenie nepoužil vo svojom príklade?
  • mal si si ju detailne naštudovať. Okrem iného sa pozrieť čo je v interface - uses
  • viem, že si do nej pozeral. To je tak všetko. Porozumel si všetkému, keď si sa tu nič nepýtal?
  • dávaš tu otázky, ktorými zbytočne oberáš ľudí o čas. Lebo to máš v tej ukážke !!!
  • Chceš zmazať posledný Edit? Prosím: FreeAndNil(EditList.Last) !!!
Takže, veľmi dôrazne Ťa žiadam:
  • spojazdni moju ukážku. Nie je to síce podmienka, ale je to najlepší spôsob
  • dokonale zvládni to čo tam je napísané. Už som Ti písal, že na objasnenie ukážky sa môžeš pokojne písať
  • potom tam postupne dopĺňaj to čo tam chceš mať
  • momentálne sa úplne vykašli na to demo čo máš a svoje pokusy !!!
Až to zvládneš, tak potom do toho môjho príkladu budeš POVINNE prenášať kód z dema. Pritom budeš riešiť každú chybu čo Ti vyskočí. Lebo len tak sa naučíš čo a ako !!! Tá ukážka je jednoduchá (nie pre teraz pre Teba), ale sú základné veci, bez ktorých sa nehneš.
PS
Pekne Ťa prosím, konečne ma počúvni a už ma neser  >:( :( :o :-\ :'( :'( :'(
A teraz do roboty. Nech nemám pocit, že s Tebou všetci zbytočne strácame čas. Až mám silné nutkanie sa opýtať koľko máš rokov ;D
Rob tak, aby som Ti neposlal súkromnú správu. Lebo tú si za klobúk nedáš ;)
« Poslední změna: 04-12-2021, 19:42:23 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #35 kdy: 04-12-2021, 19:48:03 »
Nerád by som, alebo hocikto iný, skončil takto:
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #36 kdy: 04-12-2021, 20:05:40 »
Nevim, proc to haze chybu viz. priloha.
Porad kde je chyba:
maximum, co jsem dosahl je tohle:

Kód: Delphi [Vybrat]
  1. unit Unit5;
  2.  
  3.     interface
  4.  
  5.     uses
  6.       Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.       Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Generics.Collections;
  8.  
  9.     type
  10.       TForm5 = class(TForm)
  11.         Button1: TButton;
  12.         Button2: TButton;
  13.         procedure Button1Click(Sender: TObject);
  14.         procedure FormCreate(Sender: TObject);
  15.         procedure FormDestroy(Sender: TObject);
  16.         procedure Button2Click(Sender: TObject);
  17.       private
  18.         { Private declarations }
  19.       public
  20.         { Public declarations }
  21.         bts: TList<TButton>;
  22.  
  23.       end;
  24.  
  25.     var
  26.       Form5: TForm5;
  27.  
  28.     implementation
  29.  
  30.     {$R *.dfm}
  31.  
  32.     procedure TForm5.Button1Click(Sender: TObject);
  33.     var
  34.       tmp: TButton; // <<<<<<<< lokalni
  35.     begin
  36.       tmp := TButton.Create(Self);
  37.       tmp.Parent := Self;
  38.       tmp.SetBounds(bts.Count*50, 10, 40, 40);
  39.       tmp.Caption := 'Hey jude';
  40.       bts.Add(tmp); // pridame do seznamu buttonu
  41.     end;
  42.  
  43.     procedure TForm5.Button2Click(Sender: TObject);
  44.     begin
  45.       if bts.Count > 0 then
  46.       begin
  47.          bts[0].Free;
  48.          bts.Delete(0);
  49.       end;
  50.     end;
  51.  
  52.  
  53.  
  54. procedure TForm5.FormCreate(Sender: TObject);
  55.     begin
  56.       bts := TList<TButton>.Create;
  57.     end;
  58.  
  59.     procedure TForm5.FormDestroy(Sender: TObject);
  60.     begin
  61.       FreeAndNil(bts);
  62.     end;
  63.  
  64.     end.
  65.  


Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #37 kdy: 04-12-2021, 20:09:42 »
Rikas

Poslal som Ti ukážku funkčnú ukážku. Je stiahnutá dvakrát. Som presvedčený, že Radek si ju nestiahol. Tam so Ti aj vysvetľoval zásadné veci!!!

    spojazdnil si ju?

To si trochu protireci, kdyz je funkcni tak proc bych ju mel "spojazdnit" ?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #38 kdy: 04-12-2021, 20:21:24 »
Nie, neprotirečí si to. Ty si to nedokázal spustiť. Aspoň podľa posledného príspevku - TForm3. V predposlednom príspevku som Ti napísal ako to máš uvoľniť. Zhlboka som sa nadýchol a teraz k Tvojmu kódu.
Kód: Delphi [Vybrat]
  1.   bts[0].Free;  //  tým je hodnota bts[0] nil
  2.  
  3.   bts.Delete(0);  //  nič tu nie je. Nutne musíš dostať AV (Access Violation)
Ak dostaneš nejakú chybu a tu chceš jej vysvetlenie, tak ju sem musíš skopírovať.
Opäť si ma neposlúchol. Ak neurobíš to o čo som Ťa žiadal (pekne poprosil), tak splním to čo som sľúbil. Skončím tu s Tebou. A nemyslím si, že iní (po prečítaní mojich posledných príspevkov) budú mať chuť Ti pomôcť. Prosím zamysli sa !!!
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #39 kdy: 04-12-2021, 20:34:29 »
Chapu co chces, ale bohuzel nevim, jak to mam spravit  :(

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #40 kdy: 04-12-2021, 20:39:28 »
Viď príspevok #25
Ak mu nerozumieš, tak sa pýtaj. Ale konkrétne! Po nejakých pokusoch o to.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #41 kdy: 04-12-2021, 20:41:25 »
V prípade neúspechu tu napíš krok za krokom ako si postupoval.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #42 kdy: 04-12-2021, 20:44:41 »
V tom prispevku #25 je sada nejakych souboru.

>Toto sú súbory, ktoré sa vytvárajú automaticky. Nie vždy všetky. Tučné vždy. Pri ostatných si nie som istý.

Co s nimi a jak to souvisi s chybou AV ?

Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #43 kdy: 04-12-2021, 20:46:47 »
zkusil jsem toto

Kód: Delphi [Vybrat]
  1.  
  2. procedure TForm5.Button2Click(Sender: TObject);
  3.     begin
  4.       if bts.Count > 1 then
  5.       begin
  6.          bts[0].Free;
  7.          bts.Delete(0);
  8.       end;
  9.     end;
  10.  
  11. [\code]
  12.  

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #44 kdy: 04-12-2021, 20:48:24 »
Asi máš tu istú "chybu", ako som mal ja. Musíš mať zobrazené príspevky od najnovšieho po najstarší. Ináč sa nám číslovanie bude rozchádzať. Je to príspevok predtým (časovo). Na to si mohol prísť sám ;D
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.