Vill skriva poängen man har i mitt spel med bildsiffror.
Om poängen är 999,232,424 hur vet jag då att först ska bild 9 målas sen 9, 9, 2, 3 , 2 osv?
problem.....
8 svar · 228 visningar · startad av Alpha II
Du gör en loop som går igenom talet siffra för siffra och väljer bild utefter det.
ex.
lngpoäng=999098
for i = 1 to len(lngpoäng)
lngbild = mid(lngpoäng,i,1)'Här hämtas siffran på platsen i i talet lngpoäng.
next i
fins ju ingen funktion som heter mid() :(
Jag hittar inte heller någon funktion som heter mid...
Så här nå'nting skulle jag göra:
procedure RitaPoangBilder(Poang: integer);
procedure RitaBild1;
begin
ShowMessage('Bild1')
end;
procedure RitaBild2;
begin
ShowMessage('Bild2')
end;
var
i: integer;
PoangStr: string;
begin
PoangStr := IntToStr(Poang);
for i := 1 to Length(PoangStr) do
case StrToInt(PoangStr[i]) of
1: RitaBild1;
2: RitaBild2;
// etc
end
end;
Angående "Mid()", jag tror yohpops missade att det är ett Delphi-problem. "Mid()" finns i VB.
agneta_rungs kod skulle jag vilja skriva om:
procedure RitaPoangBilder(Poang: integer);
var
i: integer;
PoangStr: string;
begin
PoangStr := IntToStr(Poang);
for i := 1 to Length(PoangStr) do
case StrToInt(PoangStr[i]) of
1: ShowMessage('Bild1');
2: ShowMessage('Bild2');
// etc
end
end;
Det finns ju ingen anledning att skriva flera procedurer som alla gör samma sak ;)
Det finns en väldigt fin komponent som heter "ImageList" som funkar som en array av bilder. Du skulle kunna indexera arrayen mha siffran som du får fram ur strängen på ovanstående sätt.
Finns det nån funktion som fyller upp strängen med nollor så att om poängen är 12 så blir score 0000012? Eller måste man programmera ihop nån liten kod som fixar det?
Då är det väl enklare att börja i slutet på strängen och gå åt andra hållet till den är slut.
För att fylla upp strängen med nollor kan du använda Format.
const
Nr = 12;
begin
ShowMessage(format('%.7d',[Nr]));
end;