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

Offline max2

  • Mladík
  • **
  • Příspěvků: 82
  • Karma: 0
    • Verze Delphi: RAD Studio 10.2
Zajimalo by me, kde se nastavi pocatecni hodnota promenne pro cely kod.

A jeste jaky je rozdil mezi sekcemi private a public.

Staci odkaz, nemusi byt odpoved.

Dekuji
« Poslední změna: 02-12-2021, 20:17:35 od max2 »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #1 kdy: 02-12-2021, 20:26:32 »
Ok
Rated 2 times
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Main_Page
Opakujem sa: premenná či konštanta? Lebo to C, ako ho používaš je konštanta.
Výraz "celý kód" je veľmi zaujímavý. U mňa to je celý program. Budeš sa musieť naučiť vyjadrovať presne. Tu sa tomu hovorí explicitne ;D
Vieš po anglicky? Ale toto by si mal vedieť preložiť:
private - súkromný. Nikto iný na to nevidí. Čo nie je vždy pravda!
public - verejný. Vidia na to aj iný. Ale ktorí?
.
Táto problematika je zložitejšia. Moje vysvetlenie je veľmi hrubé/približné. Ale máš odkaz.
.
Ešte raz zopakujem otázku: chceš s tými tlačidlami (alebo čokoľvek iné čo budeš takto vytvárať) niečo robiť???
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ěď #2 kdy: 02-12-2021, 20:41:58 »
Ja vytvarim TEdity ne tlacidla.Chtel bych do nich dat hodnotu promenne B ale nechce me to pustit, pise to
incompatible types `string` a `integer`
Jak prekonvertuji cislo na string ?

 Chtel jsem znat jenom tu zakladni vec jak nastavim pocatecni hodnotu toho `B`
Jde mi nastavit, pokud pouziji pred tim jine tlacidlo, ale nikdy ne `od zacatku s fresh spustenym exacem`.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1174
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #3 kdy: 02-12-2021, 20:50:15 »
Good
Rated 2 times
Nebylo by lepší, maxi, kdyby sis koupil knížku a nastudoval alespoň základy a syntax jazyka?

Nebo alespoň vyGooglil, hovorově se tomu říká UTFG
http://www.delphibasics.co.uk/
https://www.itnetwork.cz/programovani/delphi
https://www.builder.cz/rubriky/delphi/naucte-se-programovat-v-delphi-1-dil-trocha-historie-155789cz

Nerad bych, aby se to zvrhlo do základů programování a 50 nových příspěvků, když narazíš na nové slovo, které výše zmíněné zdroje ze 100 % jsou schopny pokrýt.
Je tu určitě spoustu lidí, kteří rádi pomáhají, ale chtělo by to projevit alespoň trochu vlastní iniciativy.

Nikdo nezačíná integrály, když ještě nezná základy matematiky. Co integrály, ani trojčlenku bez základů nedáš. Je prostě nutné něco prvně nastudovat.
RAD studio je to právem. Nakliká to i běžný uživatel, ale bez poznání těch základů to dál proste nejde.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #4 kdy: 02-12-2021, 20:58:43 »
Ja vytvarim TEdity ne tlacidla.
Tak to som si prehodil v hlave. Problémov máš viac.
  • nedostaneš sa na TEdit !!! Už som to viackrát spomenul. Dôvod: vytvorený TEdit ukladáš do jednej a tej istej premennej. Ale ona si drží len naposledy vytvorený TEdit. Ostatné sú pre Teba stratené !!!
  • Pascal prísne typový. Len niekedy urobí konverziu typov. Sú to funkcie s podobnými názvami ako je tento IntToStr()
  • A to B je čo? Lebo v poslednom uvedenom kóde som B nezaregistroval. Mohol som ho prehliadnuť
Tak
  • V prvom rade daj premenné do časti {Private declaration(?)}
  • Hoď sem celý Tvoj kód. Pri Tebe musíme robiť s niečím konkrétnym
  • Naformátuj to ako sa sluší a patrí. Kto to má čítať. Keď si prejdeš menu, tak nájdeš na to funkciu aj s klávesovou skratkou
  • Presne definuj čo chceš urobiť - cieľ
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #5 kdy: 02-12-2021, 21:02:04 »
Citace
Je tu určitě spoustu lidí, kteří rádi pomáhají, ale chtělo by to projevit alespoň trochu vlastní iniciativy.
Ja ho k tomu tlačím, ale asi je problém, že píšem po slovensky ;D ;D ;D
Mňa zarazilo, že tam má regresné(?) výrazy. Ja by som tým mal veľké problémy.
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ěď #6 kdy: 02-12-2021, 21:25:10 »
Jediny cil je, jak nastavit promenne C pocatecni hodnotu, rekneme 200.
Dal jsem ji do private jak je pozadovano.
Pak se jeste zeptam na jednu chybovou hlasku, ktera se mi pri kompilaci ukazuje a to bude pro dnesek vse.

Kód: Delphi [Vybrat]
  1.  
  2. unit Main;
  3.  
  4. interface
  5.  
  6. uses
  7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8.   Dialogs, StdCtrls, RegularExpressions;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     EditText: TEdit;
  13.     Button1: TButton;
  14.     lbType: TLabel;
  15.     Label1: TLabel;
  16.     lbRegExp: TListBox;
  17.     MemoRegEx: TMemo;
  18.     ScrollBar1: TScrollBar;
  19.     Button2: TButton;
  20.     procedure Button1Click(Sender: TObject);
  21.     procedure lbRegExpClick(Sender: TObject);
  22.     procedure FormCreate(Sender: TObject);
  23.     procedure ScrollBar1Change(Sender: TObject);
  24.     procedure Button2Click(Sender: TObject);
  25.  
  26.   private
  27.   var C: integer;
  28.  
  29.     { Private declarations }
  30.   public
  31.      { Public declarations }
  32.   end;
  33.  
  34. var
  35. B:Integer;
  36.  
  37.   Form1: TForm1;
  38. Btn: TEdit;
  39. MyEdit: TEdit;
  40.  
  41.  
  42. implementation
  43.  
  44. {$R *.dfm}
  45.  
  46.  
  47. procedure TForm1.Button1Click(Sender: TObject);
  48. begin
  49.   if TRegEx.IsMatch(EditText.Text, MemoRegEx.Lines.Text) then
  50.     ShowMessage('Text h match the regular expression')
  51.   else
  52.     ShowMessage('Text v NOT match the regular expression');
  53.  
  54. end;
  55.  
  56. procedure TForm1.Button2Click(Sender: TObject);
  57. begin
  58.    MyEdit:=tEdit.Create(self);
  59.  try
  60.   MyEdit.Parent:=self;
  61.   MyEdit.Left:=16;
  62.   MyEdit.Top:=16+C;
  63.   MyEdit.Width:=200;
  64.   MyEdit.Text:=inttostr(C);
  65.   MyEdit.Visible:=true;
  66.   C:=C+20;
  67.  except
  68.   FreeAndNil(MyEdit);
  69.   raise;
  70.    end;
  71. end;
  72.  
  73. procedure TForm1.FormCreate(Sender: TObject);
  74. begin
  75.   lbRegExp.ItemIndex := 0;
  76.   lbRegExpClick(lbRegExp);
  77.   end;
  78.  
  79. procedure TForm1.lbRegExpClick(Sender: TObject);
  80. begin
  81.   case lbRegExp.ItemIndex of
  82.     0:
  83.       begin
  84.         lbType.Caption := 'Email for validation';
  85.         MemoRegEx.Lines.Text := '^((?>[a-zA-Z\d!#$%&''*+\-/=?^_`{|}~]+\x20*' +
  86.           '|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\' +
  87.           'x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!' +
  88.           '#$%&''*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])' +
  89.           '[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\' +
  90.           '-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)' +
  91.           '(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\' +
  92.           'd\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|' +
  93.           '\\[\x01-\x7f])+)\])(?(angle)>)$';
  94.       end;
  95.     1:
  96.       begin
  97.         // Accept IP address between 0..255
  98.         lbType.Caption := 'IP address for validation (0..255)';
  99.         MemoRegEx.Lines.Text := '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\' +
  100.           '.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' +
  101.           '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' +
  102.           '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b';
  103.  
  104.       end;
  105.     2:
  106.       begin
  107.         // Data interval format mm-dd-yyyy
  108.         lbType.Caption :=
  109.           'Date in mm-dd-yyyy format from between 01-01-1900 and 12-31-2099';
  110.         MemoRegEx.Lines.Text := '^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[' +
  111.           '01])[- /.](19|20)\d\d$';
  112.  
  113.       end;
  114.   end;
  115.  
  116. end;
  117.  
  118. procedure TForm1.ScrollBar1Change(Sender: TObject);
  119. begin
  120.  Caption:=Format('%d',[ScrollBar1.Position]);
  121. end;
  122.  
  123.  
  124. end.

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ěď #7 kdy: 02-12-2021, 21:27:56 »
Pri kazde kompilaci kodu vyse se mi zobrazuje tato chybova ozvucena hlaska,proc? :

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #8 kdy: 02-12-2021, 21:46:43 »
Jediny cil je, jak nastavit promenne C pocatecni hodnotu, rekneme 200.

A proč že tu hodnotu nenastavuješ v OnCreate, jak jsem už psal? (Tj. metoda FormCreate.)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #9 kdy: 02-12-2021, 21:51:09 »
A tieto sú siroty?
  • B:Integer;
  • Btn: TEdit;
  • MyEdit: TEdit;
V skutočnosti premennú C nepotrebuješ! Použiješ vlastnosti posledného TEdit a konštantu.
.
S chybou Ti neporadím. Je to nad moje vedomosti.
Chybu nie je vidieť celú. Prezradím Ti trik. Klikni na chybové okno, Ctrl + C a máš jeho obsah v schránke. Ten potom hodíš sem. Upravený.
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ěď #10 kdy: 02-12-2021, 21:53:28 »
Nefunguje to. Radka s TEdit je uplne vlevo nahore namisto vlevo na pozici 200, viz priloha.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #11 kdy: 02-12-2021, 21:59:36 »
Čo nefunguje? Veď tam máš "0" :D . Otestoval si si hodnotu pred jej konverziou?
Nečítal som poriadne. Ja nevidím inicializovanie C.

Dôležité:
  • pomenovanie čohokoľvek musí byť jasné a vypovedať o čo ide. Tie B a C sú veľmi zlé názvy. Ja niekedy premenujem aj 5x
  • v kóde sa nemajú používať čísla. Výnimku majú 0 a 1. Buď použiješ konštantu alebo vymenované (enumerated) typy
« Poslední změna: 02-12-2021, 22:02:09 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #12 kdy: 02-12-2021, 22:00:30 »
Nefunguje to. Radka s TEdit je uplne vlevo nahore namisto vlevo na pozici 200, viz priloha.

A určitě jsi to po dopsání toho c:=200 znovu zkompiloval a spustil? Když tak si tam dej breakpoint, ať máš jistotu, že se ten kód opravdu vykoná...

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ěď #13 kdy: 02-12-2021, 22:06:07 »
Ano spousti se to.
Prave to ze je tam 0 je ten problem chci tam mit 200.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Nejake nejasnosti ohledne zacatku programovani v Delphi.
« Odpověď #14 kdy: 02-12-2021, 22:08:17 »
Urob jednu vec. Snímku len formulára v návrhárovi. Potom tam nakresli obdĺžnik, kde chceš mať prvý edit. Daj to sem. Idem sa umyť a potom spať. Už aj tak preťahujem večierku ;D 
Keď sem hodíš obrázok, tak Ti napíšem ako na to.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.