Ďakujem.
V prvom rade, názvy premenných sa nesmú začínať číslicou, takže časť spomínaného zdrojáku mala vyzerať zhruba takto:var
pismeno1: char;
begin
pismeno1 := 'A';
Neviem, ako ste to chceli riešiť, ale existuje veľmi jednoduchý spôsob. Odporúčam využiť vlastnosť, že veľké písmená sa v ASCII tabuľke nachádzajú súvisle, začínajúc písmenom 'A' s kódom 65. Týchto písmen je spolu 26. Stačí vygenerovať náhodné číslo v tomto rozsahu a pomocou funkcie chr(cislo) previesť číslo na znak.
Dobrý deň,
chcel by som sa spýtať, či mi viete nejako poradiť. Píšem program, ktorý by mal náhodne vyhodiť písmeno. Naneštastie tam neviem dať správny typ premennej. Vedeli by ste mi poradiť, aký typ premennej tam mám dať, a či som nespravil chybu niekde inde?
Tu je ten program:
program cisla;
var
0, 1, 2 : ???;
begin
0 := A;
1 := B;
2 := C;
readln();
writeln(random(3));
readln();
end.
Ďakujem.
Ďakujem Vám za pomoc!
V minulosti som sa snažil vytvárať jednoduché programy najprv v TP6, potom v Delphi. Potom som pre zdravotné problémy prestal. Nedávno som objavil na Internete Lazarus a nedalo mi aby som ho nevyskúšal. Skúsil som prerobiť jeden zo starších programov a šlo to.
Som veľmi rád, že som narazil na Vašu stránku odkiaľ som čerpal vedomosti, a že ste mi pomohli s mojim problémom.
Ďakujem.
Tento problém pravdepodobne súvisí s prechodom Lazarusu na Unicode. Zdrojový kód v IDE je totiž ukladaný v UTF-8. Riešením môže byť použitie konverznej funkcie AnsiToUtf8. Tu je príklad:var
meno: String;
...
meno := AnsiToUtf8(Reg.ReadString('RegisteredOrganization'));
ShowMessage(meno);
if meno = 'niečo' then
ShowMessage('dačo');
...
Keď do registrov vložím názov organizácie SPOJENA SKOLA MARTIN tak to načíta do premennej MENO celé a je to možné aj zobraziť (vypísať na obrazovku).
Ale ak by tam bol čo i len jeden znak s diakritikou napríklad SPOJENÁ SKOLA MARTIN tak sa do premmennej MENO načíta 'SPOJEN'#193' SKOLA MARTIN' a to sa už nedá vypísať ani použiť na porovnanie s kontrolnym reťazcom (chcem to použiť na jednoduché zabezpečenie programu). Zistil som to pozretím do obsahu lokálnej premennej MENO.
Ja som to zisťoval iba v znakoch Á,Š.
O ake znaky presne ide? Vsetky s diakritikou alebo len niektore?
Ďakujem za ochotu mi pomôcť. Stále to pracuje len s názvom bez diakritiky.
Takto je procedura zapísaná. Mám Lazarus v0.9.26.procedure TForm1.Button12Click(Sender: TObject);
var Reg:TRegistry;
meno: widestring;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('\Software\Microsoft\Windows NT\CurrentVersion\', False);
meno := Reg.ReadString('RegisteredOrganization');
Reg.CloseKey;
ShowMessage (meno);
finally
Reg.Free;
end;
end;
Skus pouzit retazec typu WideString, ale neviem, ci to pomoze.