Delphi

Vím, že to sem asi nepatří, ale přesto:
Mam v Delphi toto:

procedure TForm1.Button1Click(Sender: TObject);
var d:integer;
s:char;
k,slovo:string;
begin
slovo:=slova[i];
for d:=2 to length(slovo)-1 do
begin
k:=(Sender as TButton).Caption;
s:=copy(slovo,d,1);
if k=s then slovo[d]:=s;
end;

Ovšem u s:=copy(slovo,d,1); mi Delphi hlásí: "[Error] Unit1.pas(108): Incompatible types: 'Char' and 'String'". Ale já potřebuju nějak ten char dostat do toho stringu.
Když dám s:string, tak hlásí chybu o řádek níž. Pls help
Delphi ma v tech zdrojacich strasnej bordel, neda se v tom vyznat, tak ti neporadim :]

ale nejakou fci na konverzi do stringu to musi mit.
Ypkis: zase ma prijemnejsi prostredi jak nejaky za... VS...
Johny, co je v prom slova a co je v i?
A co to ma vlastne delat? Prijde mi to dost zmatene, urcite se to da napsat jinak. (-;
MzM: To určitě dá. Měla by to být šibenice. slova je konstantní pole, i je globální proměná.
VS sux, ale VB ma rulez IDE a mnohem prehlednejsi kod :)
Ypkis: Zavři držku!
lol, cože, klid, dyť snad zas tolik neřek :D
milster: Jenže on tady kecá úplný pitomosti, místo aby se třeba, omylem snažil pomoct.
V tom druhym příspěvku jenom reagoval na Marka..
v delphi se moc nevyznám, ale:
s:=slovo[d];
nevim, jestli to bude makat...
Musím připomenout, že string není v pascalu nic jiného než pole znaků, a tudíž Majkls nenašel příčinu (což neznamená, že by byl blbej, jenom asi nedělá v pascalu tak často :D)

Funkce copy požaduje dva stringy, což už je problém. Já bych prostě znak vložil takto:

string[pozice] := char;

A nebo se mi nezdá, že esku přiřazuješ výsledek operace copy... to se smí?
Jo, a ještě jedna rada - pojmenuj si tu proměnné rozumně člověče ;) Majkls to vyřešil, ale s, d, b, f, u a podobné názvy proměnných mě zmatou ;)
Majkls i Nipal maji pravdu. String (retezec) je pole znaku ukoncene "\0".
Takze k jednotlivym znakum lze pristupovat pomoci indexu.
Prikaz copy lze taky pouzit, ale ten vraci opet string nikoli char. Proto ta chyba. Pokud chces pracovat s charem, tak jedine pomoci indexu pole.
Tedy misto s := copy(slovo,d,1); dej s := slovo[d];

Nejak ale nechapu smysl zdrojaku. Co to ma vlastne delat? Protoze z tohoto zdrojaku je na pohled vic chyb, nez prekladac zjisti.
Např.: if k=s then slovo[d]:= s;
Nevim proc se ma porovnavat k(string) a s(char). Prekladac to muze vzit jako v pohode, ale realne se tyto hodnoty nebudou nikdy rovnat. Protoze i kdyz jsou to stejne znaky, tak string ma v sobe jeste zakonceni \0 a to uz je odlisne.

2Ypkis: VB jsem uz davno vyhodil. Delphi je mnohem lepsi. Znam ty jejich vyvojaky. A popravde delaj vetsi bordel nez cokoli jinyho. Kdo se ma vyznat v tech jejich nesmyslnych hlasek. V VC++ pouzivaj nestandardni metody, ze z toho clovek cvokne. Nic ve zlym. Kazdy ma svuj vkus. Ty VB. Ja Delphi.

BTW: Tetno tyden tu uz nejsem, takze jsem mimo. To vite zkouskovy na VS.
Tomik, string v delphi rozhodne neni ukonceny \0, to si pletes s C. Neco takoveho je i v Delphi, ale string to neni.

VS: na vs c# me 'nadchlo' foldovani pomoci preprocesorovych #region #endregion.... fuj...

predpokladam, ze button1click bude prilinkovany vsem tlacitkum, na kterych budou ruzna pismenka.
Asi bych to delal tak, ze bych pouzil strpos() - v delphi je to tusim jenom pos(). To by se dalo pouzit. Neco jako

pismenko = (sender as button).caption;
pozice = pos(slovo, pismenko);
if (pozice > 0) then begin
ukazane_slovo[pozice] = pismenko;
end;

tak nejak by to mohlo fungovat...
MzM: tuším, že jsem někde čet, že kvůli kompatibilitě s C začali zakončovat stringy nulou i v delphi. Možná kecám. Nevěř mi :-))
Majkls: Nevěřím :)

Jinak vyřešeno úplně jinak, ale nechal sem to ve škole.
Dík za snahu.
Majkls: v delphi existuje cosi, co se chová stejně jako C stringy. Tuším PChar...
Jestli se na konec stringu ukládá nula to nevím, ale string má na začátku délku...
Tak za
a)VB bych s Delphi raději nesrovnával (sorry, koho urazím)
b)Nějaký jazyk (Delphi) ve zdrojácích bordel nemůže mít, úhlednost kódu je věc programátora. Ona existuje taková věc (grafická úprava) - například odsazení každého vnořeného bloku o dvě mezery atd.
promluvil pan vyvojar..
2adamsOn: Proc dve mezery? Ja pouzivam i 5.
a) Samozrejme neporovnavam VB a Delphi. Je mi jasne, ze to neni to same (vlastni zkusenost. Oba jsem pouzival).
b) O bordelu jsem nemluvil o zdrojacich, ale o programu.
Tomik:

Ja jsem reagoval spis na Ypkise:
>>Delphi ma v tech zdrojacich strasnej bordel, neda se v tom vyznat, tak ti neporadim :]
>>VS sux, ale VB ma rulez IDE a mnohem prehlednejsi kod :)

a)Ohledne VB a Delphi s Tebou ale uplne souhlasim. Ja jsem taky pouzival oboji (nejdriv VB, pak Delphi). A chtel jsem rici, ze IMHO je Delphi nesrovnatelne lepsi. Puvodne jsem to napsal trochu ostreji a pak jsem to zmirnil a vyznelo to nejednoznacne.

b)To jsem samozrejme zase reagoval na Ypkise.

mezery - To je samozrejme, napr. v Delphi pouzivam dve, v C tri a jinde zase jiny pocet.
Ze jsem reagoval na Ypkise je jasne z toho, ze se tu objevilo Oko (doufejme) Ypkisovo - Pat.
nebudu srovnavat delphi a VB pac neprogramuju. ja jen zase rypu, narazim na to ze si nekdo necha rikat vyvojar :)
Ja si rikam vyvojar?
PChar(String);