| | |
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 07.08.09 Prihlásený: 08.12.09 Príspevky: 17 Témy: 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
|
|
Registrovaný: 11.01.09 Prihlásený: 28.03.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 09.10.2009 18:24 | |
|
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ť?)
|
|
Registrovaný: 07.08.09 Prihlásený: 08.12.09 Príspevky: 17 Témy: 3 | Napísal autor témy TheK.SVK: 09.10.2009 18:57 | |
|
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;
|
|
Registrovaný: 11.01.09 Prihlásený: 28.03.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 09.10.2009 19:15 | |
|
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 .
|
|
Registrovaný: 07.08.09 Prihlásený: 08.12.09 Príspevky: 17 Témy: 3 | Napísal autor témy TheK.SVK: 09.10.2009 20:14 | |
|
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.
|
|
Registrovaný: 11.01.09 Prihlásený: 28.03.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 09.10.2009 20:52 | |
|
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);
|
|
Registrovaný: 07.08.09 Prihlásený: 08.12.09 Príspevky: 17 Témy: 3 | Napísal autor témy TheK.SVK: 09.10.2009 22:10 | |
|
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 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
|
|
Registrovaný: 11.01.09 Prihlásený: 28.03.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 10.10.2009 8:18 | |
|
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ý.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?) v Technológia .NET | 9 | 2213 | 31.08.2017 15:10 focko | | Delphi class v Delphi, Visual Basic | 1 | 783 | 10.09.2009 16:35 Fico | | MicroSDHC class 2 alebo class 4 mám vrátiť ? v Pamäte | 3 | 664 | 16.12.2010 20:09 majky358 | | javascript required formular v JavaScript, VBScript, Ajax | 9 | 497 | 17.12.2015 10:33 chrono | | delphi zapis cisla do editu v delphi v Delphi, Visual Basic | 3 | 1100 | 11.05.2008 12:02 p360t | | required polia vo formulári a chybová hláška v PHP, ASP | 8 | 699 | 14.10.2009 22:39 davider137 | | OBJECT v HTML, XHTML, XML, CSS | 1 | 630 | 12.02.2008 11:00 walther | | Java Object (Superclass) v Assembler, C, C++, Pascal, Java | 1 | 596 | 27.09.2011 23:42 Forty- | | Cannot convert to object v JavaScript, VBScript, Ajax | 2 | 475 | 02.10.2010 18:21 TECHNODROME | | div object a ul - li v HTML, XHTML, XML, CSS | 10 | 713 | 27.04.2007 11:10 vladopt | | Neosadenie z-index pre object v Chrome v HTML, XHTML, XML, CSS | 6 | 574 | 23.03.2011 19:39 weroro | | Fatal error: Using $this when not in object context v PHP, ASP | 6 | 464 | 26.04.2010 16:40 petanorech | | Content-type v PHP, ASP | 5 | 779 | 25.03.2007 11:30 p360t | | Book Type v Optické zariadenia | 1 | 1366 | 21.08.2005 15:34 Carlos | | For Honor NAT Type v Počítačové hry | 4 | 1084 | 26.02.2017 23:04 bony7x | | value pri type file v HTML, XHTML, XML, CSS | 1 | 494 | 25.06.2007 7:03 zero0x |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|