Avatar billede epo_blackdevil Nybegynder
03. marts 2005 - 08:33 Der er 8 kommentarer og
3 løsninger

variabel nummer

jeg har et lille spil jeg er ved at lave i skolen, men jeg bruger den samme lange kode mange steder, den eneste forskel er variablen der bruges har et forskellige nummer.

begin
if listbox2.Items.Strings[ListBox2.ItemIndex]=aktie1_til_salg then
begin
//lisbox2 opdateres
aktie1_antal_stk_til_salg:=aktie1_antal_stk_til_salg-antal_kbt;
aktie1_til_salg:=  aktie1_navn+':'  +inttostr(aktie1_vrdi)+'kr, ' +inttostr(aktie1_antal_stk_til_salg)+'stk';
listbox2.Items.strings[ListBox2.ItemIndex]:=aktie1_til_salg;

osv...

kan man ikke gøre så variablen hedder aktie[nummer]....

så i starten

if listbox2.Items.Strings[ListBox2.ItemIndex]=aktie1_til_salg then nummer:=1

og så vælger den aktie1.....

if listbox2.Items.Strings[ListBox2.ItemIndex]=aktie2_til_salg then nummer:=2

osv..

så jeg kan benytte den samme kode heletiden og programmet selv finder ud af hvilket nummer den skal bruge?
Avatar billede martinlind Nybegynder
03. marts 2005 - 13:50 #1
with ListBox2, Listbox2.Items do
begin
if Strings[ItemIndex]=aktie1_til_salg then
begin
//lisbox2 opdateres
aktie1_antal_stk_til_salg:=aktie1_antal_stk_til_salg-antal_kbt;
aktie1_til_salg:=  aktie1_navn+':'  +inttostr(aktie1_vrdi)+'kr, ' +inttostr(aktie1_antal_stk_til_salg)+'stk';
osv..

Var det sådan du mente ??
Avatar billede epo_blackdevil Nybegynder
03. marts 2005 - 14:07 #2
nej vil have så istedet for aktie1 står der aktie[nummer]. vil have så [nummer] erstattes af f.eks. 1. så programmet læser aktie1

vil gerne undgå at skulle skrive den same kode 10 gange pga variablerne for hver aktie hedder aktie1, aktie2...aktie10.
Avatar billede tolderlund Nybegynder
03. marts 2005 - 15:01 #3
Det du efterlyser hedder arrays.
var
  aktie: array [1..10] of integer;
  i: Integer;
begin
  // initier array
  for i := 1 to 10 do
    aktie[i] := 0;
  // optæl
  aktie[1] := aktie[1] + antal;
  aktie[5] := aktie[5] - antal;
osv.
Avatar billede dkn Nybegynder
03. marts 2005 - 15:04 #4
tror at du vil få bedste resultat hvis du vælger at lave et object så evt variabler du har, kan blive blive brugt fra listbox.objects.
Så bliver det dynamisc frem for det du har gang i nu.
Avatar billede martinlind Nybegynder
03. marts 2005 - 15:10 #5
du kan også vælge en TStringList i stedet for array[]

VAR
  L : TStringList;

begin
  L := TStringList.Create;
  L.Add('Aktie1');
  L.Add('Aktie2');
  ...
  L.Add('Aktie718');
end;

og så skal du når du er færdig med at bruge L huske at lave en L.Free;
Avatar billede epo_blackdevil Nybegynder
03. marts 2005 - 15:36 #6
@tolderlund på den måde der skal man da selv sætte nummer efter hver variabel alligevel? eller mig der har misforstået noget?

@martinlind er ikke lige med på hvad du mener der...
når jeg så har alle aktierne i den liste, men hver "aktie" har 6 variabler der bruges til at styre forskellige ting.

variabler til aktie1:
        aktie1_til_salg: string;
        aktie1_vrdi: integer;
        aktie1_antal_stk_til_salg: integer;
        aktie1_antal_stk_kbt: string;
        aktie1_kbt: integer;
        aktie1_navn: string;

ved ikke om i har misforstået det jeg gerne vil eller mig der ikke forstår jeres svar...

kort eksempel:

if variabel=1 then nummer:=1
if variabel=2 then nummer:=3
if variabel=3 then nummer:=3
aktie[nummer]_solgt:=aktie[nummer]_solgt - antal_kobt

på den måde behøver jeg kun skrive
aktie[nummer]_solgt:=aktie[nummer]_solgt - antal_kobt
en gang istedet for

aktie1_solgt:=aktie1_solgt - antal_kobt
aktie2_solgt:=aktie2_solgt - antal_kobt
aktie3_solgt:=aktie3_solgt - antal_kobt
Avatar billede tolderlund Nybegynder
04. marts 2005 - 10:46 #7
Prøv at kigge på mit eksempel igen.
Om man skriver
  aktie[1] := aktie[1] + antal;
eller
  nummer := 1;
  aktie[nummer] := aktie[nummer] + antal;
gør ingen forskel.
Det virker som om at du ikke ved hvad arrays (tabeller) er.
Er du nybegynder i programmering?
Avatar billede epo_blackdevil Nybegynder
04. marts 2005 - 12:19 #8
jeg vil undgå at skrive 1 ud for aktie da det lige så godt ku vælre aktie 3 jeg sku bruge. derfor nummer som så ku erstattes af et givent tak der blive defineret alt efter hvilken aktie der bliver valgt
Avatar billede tolderlund Nybegynder
04. marts 2005 - 14:56 #9
Det er ren goddag mand økseskaft.
Avatar billede epo_blackdevil Nybegynder
04. marts 2005 - 15:49 #10
javel ja :S

hvorfor det?

syntes du det er nemmere at kopiere samme kode 10 gange ind og så ændre tallet ud for 5 variabler som opstår flere gange i hver afsnit?
Avatar billede epo_blackdevil Nybegynder
16. marts 2005 - 10:35 #11
i får point som tak for i prøvede at løs mit problem.

har dog stadig samme problem men må bare skrive 984234 linier kode istet for 10 :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester