[ Príspevkov: 8 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Delphi - object or class type required

Registrovaný: 07.08.09
Prihlásený: 08.12.09
Príspevky: 17
Témy: 3 | 3

procedure Thra.NakolaClick(Sender: TObject); // vyber typu hry
begin
ModhryV:=3;
TypHryName:='Nakola';
end;

procedure Thra.SetModHry (TypHryName: string); // zmeni nazov prave vybranej polozky
begin
NaKola.caption:='Na Kola';
NaVitazstva.Caption:='Na Vitazstva';
Volny.Caption:='Volny';
TypHryName.Caption:=TypHryName + ' (teraz)'; // prida k vybranej polozke "teraz"
Hra.Hide;
ModW.Show;
end;

Je to cast kodu z Kamen Papier Noznice a mam nasledujuci problem - na riadku:
TypHryName.Caption:=TypHryName + ' (teraz)';

Hlasi chybu: Record, object or class type required. Vobec nemam tusenia co samu nepaci. Ono to vlastne meni nazov vopred neurcitej polozky, ale myslel som ze s tym nebudu problemy.
Dakujem

//viem ze by sa to dalo urobit aj inak, ale zamerne som chcel vyuzit parameter


Online

Skúsený užívateľ
Skúsený užívateľ
Delphi - object or class type required

Registrovaný: 11.01.09
Prihlásený: 08.01.25
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 09.10.2009 18:24 | Delphi - object or class type required

Z programového hľadiska tam nemáš chybu, takže z takého výcucu kódu ťažko určiť chybu. Na ostatných labeloch to neukazuje? Skús tomuto labelu priradiť iba konštantný údaj (čiže iba niečo v úvodzovkách), či to takisto vyhlási chybu.
(a ešte otázka: Je to run time error, alebo sa to nedá skompilovať?)


Offline

Užívateľ
Užívateľ
Delphi - object or class type required

Registrovaný: 07.08.09
Prihlásený: 08.12.09
Príspevky: 17
Témy: 3 | 3
Napísal autor témyOffline : 09.10.2009 18:57 | Delphi - object or class type required

Pokial dosadim dosadim pred .caption nieco s pevnou hodnotou tak to problemy nerobi....a chybu vyhlasuje pri kompilacii

Este pridavam aj deklaraciu...
Kód:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  Thra = class(TForm)
    Noznice: TButton;
    Kamen: TButton;
    Papier: TButton;
    ShowSelect: TLabel;
    vyber: TLabel;
    PC: TLabel;
    VysledokHry: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    AIStav: TLabel;
    HRStav: TLabel;
    MainMenu1: TMainMenu;
    f1: TMenuItem;
    ResetButt: TMenuItem;
    Ukoncithru1: TMenuItem;
    Modhry: TMenuItem;
    Volny: TMenuItem;
    Navitazstva: TMenuItem;
    Nakola: TMenuItem;
    Button1: TButton;
    Label5: TLabel;

    procedure KamenClick(Sender: TObject);
    procedure PapierClick(Sender: TObject);
    procedure NozniceClick(Sender: TObject);
    procedure ZmenitVyber;
    procedure SpolVyber;
    procedure ResetButtClick(Sender: TObject);
    procedure Reset;
    procedure Ukoncithru1Click(Sender: TObject);
    procedure VolnyClick(Sender: TObject);
    procedure NavitazstvaClick(Sender: TObject);
    procedure NakolaClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure SetModHry(TypHryName: string);

  private

  public


  end;

var
  hra: Thra;

    PCvolba,HRvolba,rozhodca:byte;
    AIstavV, HRstavV, MODhryV:byte;
    vysledok,pocet:integer;
    selected,ModHryStav,TypHryName,pomoc:string;


Online

Skúsený užívateľ
Skúsený užívateľ
Delphi - object or class type required

Registrovaný: 11.01.09
Prihlásený: 08.01.25
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 09.10.2009 19:15 | Delphi - object or class type required

Dobre, že si nám vypísal aj deklaráciu, pretože je krásne vidieť chybu --> z premennej TypHryName, ktorá je typu string, si urobil TMenuItem. Ak má byť TypHryName položka v menu, tak ju treba pridať na formulár. A ak má byť string, tak jednoducho odstráň .caption .


Offline

Užívateľ
Užívateľ
Delphi - object or class type required

Registrovaný: 07.08.09
Prihlásený: 08.12.09
Príspevky: 17
Témy: 3 | 3
Napísal autor témyOffline : 09.10.2009 20:14 | Delphi - object or class type required

No ale v tom pripade, ak z nej spravim TMenuItem, nemozem do nej ulozit potrebny nazov pri vybere polozky...tj

Kód:
procedure Thra.NavitazstvaClick(Sender: TObject);
begin
ModhryV:=2;
TypHryName:='Na vitazstva';
SetModHry (TypHryName);
end;

... nekompatibilne typy String a TMenuItem
A v podstate si tym padom uvedomujem ze to co som chcel urobit asi nebude mozne... ja totiz potrebujem do toho napisu preniest stringovu hodnotu. Co nie je mozne...

No kazdopadne dakujem za pomoc, pochopil som preco mi to vlastne nejde.

A mam este jednu otazku:
Je mozne nejak zavolat metodu ktora sa nachadza pod urcitym tlacidlom ? Myslim ze by to casto krat usetrilo cas.


Online

Skúsený užívateľ
Skúsený užívateľ
Delphi - object or class type required

Registrovaný: 11.01.09
Prihlásený: 08.01.25
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 09.10.2009 20:52 | Delphi - object or class type required

Moment, keď som si prešiel celý tvoj kód ešte raz, asi mi došlo, čo to malo robiť. Takže sa ešte raz pýtam:

1.) Chceš, aby procedúra Thra.SetModHry (TypHryName: string) pridala k názvu položky TypHryName (ktorý je parameter tejto funkcie) text '(teraz)' ???

2.) Máš iba 3 MenuItemy: NaKola, NaVitazstva, Volny ? A chceš priraďovať text '(teraz)' iba medzi nimi?

Ak áno, tak zabudni na to, čo som písal pred tým, iba pridaj do prvého príspevku toto:
Kód:
  for i:= 0 to (Form1.ComponentCount-1) do
    if (Form1.Components[i] is TMenuItem) then
      if (Form1.Components[i] as TMenuItem).Caption = TypHryName then (Form1.Components[i] as TMenuItem).Caption:= TypHryName + ' (teraz)';
Táto časť kódu vahľadá menu položku s názvom, ktorý je v premennej TypHryName (typu string) a pridá k nemu text '(teraz)'. Snáď to je to, čo si chcel.

TheK.SVK píše:
Je mozne nejak zavolat metodu ktora sa nachadza pod urcitym tlacidlom ?

Ak sa napríklad daná metóda volá Button1Click, tak takto:)
Kód:
Button1Click(nil);


Offline

Užívateľ
Užívateľ
Delphi - object or class type required

Registrovaný: 07.08.09
Prihlásený: 08.12.09
Príspevky: 17
Témy: 3 | 3
Napísal autor témyOffline : 09.10.2009 22:10 | Delphi - object or class type required

Fico píše:
1.) Chceš, aby procedúra Thra.SetModHry (TypHryName: string) pridala k názvu položky TypHryName (ktorý je parameter tejto funkcie) text '(teraz)' ???

2.) Máš iba 3 MenuItemy: NaKola, NaVitazstva, Volny ? A chceš priraďovať text '(teraz)' iba medzi nimi?
Presne tak, Ano je odpoved na obidve otazky.
Tak som skusil ten tvoj kod, skompilovat skompiluje, ale nefunguje. Neviem este preco, pokusim sa este blizsie analyzovat tvoj kod a celkovo cely ten proces a odhalit tu zradu...

Citácia:
Ak sa napríklad daná metóda volá Button1Click, tak takto:)
Kód:
Button1Click(nil);

Funguje, je to parada

Velke dakujem ti patri :)

//yahooo :lol: Podarilo sa mi pochopit tvoj kod a najst chybu... (predvoleny caption tych tlacidiel sa odlisovat od nazvov pod stringom TypHryName a pre to nenaslo rovnost => nesplnilo podmienku....

Ale comu nerozumiem, preco je tu
Kód:
for i:= 0 to (Form1.ComponentCount-1)

...este odcitavanie -1


Online

Skúsený užívateľ
Skúsený užívateľ
Delphi - object or class type required

Registrovaný: 11.01.09
Prihlásený: 08.01.25
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 10.10.2009 8:18 | Delphi - object or class type required

Odpoveď je jednoduchá. Lebo pole Form1.Components[i] začína od nuly a má veľkosť Form1.ComponentCount. Čiže ak máš na formulári 5 komponentov, tak pole vyzerá takto: [0, 1, 2, 3, 4] --> posledný prvok je 5-1 a počet všetkých prvkov je 5.

// To indexovanie poľa s nulou na začiatku sa implicitne používa v jazyku C. Takýto postup v cykloch je tam bežný.


 [ Príspevkov: 8 ] 


Delphi - object or class type required



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)

v Technológia .NET

9

2770

31.08.2017 15:10

focko

V tomto fóre nie sú ďalšie neprečítané témy.

Delphi class

v Delphi, Visual Basic

1

839

10.09.2009 16:35

Fico

V tomto fóre nie sú ďalšie neprečítané témy.

MicroSDHC class 2 alebo class 4 mám vrátiť ?

v Pamäte

3

715

16.12.2010 20:09

majky358

V tomto fóre nie sú ďalšie neprečítané témy.

javascript required formular

v JavaScript, VBScript, Ajax

9

535

17.12.2015 10:33

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

delphi zapis cisla do editu v delphi

v Delphi, Visual Basic

3

1153

11.05.2008 12:02

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

required polia vo formulári a chybová hláška

v PHP, ASP

8

741

14.10.2009 22:39

davider137

V tomto fóre nie sú ďalšie neprečítané témy.

OBJECT

v HTML, XHTML, XML, CSS

1

669

12.02.2008 11:00

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Java Object (Superclass)

v Assembler, C, C++, Pascal, Java

1

647

27.09.2011 23:42

Forty-

V tomto fóre nie sú ďalšie neprečítané témy.

Cannot convert to object

v JavaScript, VBScript, Ajax

2

514

02.10.2010 18:21

TECHNODROME

V tomto fóre nie sú ďalšie neprečítané témy.

div object a ul - li

v HTML, XHTML, XML, CSS

10

748

27.04.2007 11:10

vladopt

V tomto fóre nie sú ďalšie neprečítané témy.

Neosadenie z-index pre object v Chrome

v HTML, XHTML, XML, CSS

6

615

23.03.2011 19:39

weroro

V tomto fóre nie sú ďalšie neprečítané témy.

Fatal error: Using $this when not in object context

v PHP, ASP

6

519

26.04.2010 16:40

petanorech

V tomto fóre nie sú ďalšie neprečítané témy.

Book Type

v Optické zariadenia

1

1407

21.08.2005 15:34

Carlos

V tomto fóre nie sú ďalšie neprečítané témy.

Content-type

v PHP, ASP

5

823

25.03.2007 11:30

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

For Honor NAT Type

v Počítačové hry

4

1135

26.02.2017 23:04

bony7x

V tomto fóre nie sú ďalšie neprečítané témy.

value pri type file

v HTML, XHTML, XML, CSS

1

525

25.06.2007 7:03

zero0x



© 2005 - 2025 PCforum, edited by JanoF