webForumDet fria alternativet

problem.....

Programmering

8 svar · 228 visningar · startad av Alpha II

Medlem sedan maj 20002 993 inlägg
Frågan#1

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?

Medlem sedan feb. 20011 198 inlägg
#2

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

Medlem sedan maj 20002 993 inlägg
#3

fins ju ingen funktion som heter mid() :(

Medlem sedan juli 2002145 inlägg
#4

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;
Medlem sedan maj 20018 027 inlägg
#5

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 ;)

Medlem sedan okt. 20013 217 inlägg
#6

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.

Medlem sedan maj 20002 993 inlägg
#7

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?

Medlem sedan okt. 20013 217 inlägg
#8

Då är det väl enklare att börja i slutet på strängen och gå åt andra hållet till den är slut.

Medlem sedan juni 2000350 inlägg
#9

För att fylla upp strängen med nollor kan du använda Format.

const
Nr = 12;
begin
ShowMessage(format('%.7d',[Nr]));
end;

250 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)