Programik początkującego w Delphi

Odpowiedz Nowy wątek
2015-01-09 19:01
0

Witam!
Poniekąd jako projekt w szkole mam napisać dowolny program w Delphi. POstanowiłem programik z silnikami samochodów i informacjami o nich ogarnąć. Programik ma wyglądać tak że po wyborze z menu serii samochodu (np. tak jak tu BMW E30) wyskakują mi silniki w róznych odmianach auta.
d86c509cce.png
A po nakliknięćiu na pozycje z listboxa wyskakują mi dodatkowe informacje o nich. Dobra, teraz troche o strukturze mojego programu.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, Grids;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    MainMenu1: TMainMenu;
    Silniki1: TMenuItem;
    BMW1: TMenuItem;
    E301: TMenuItem;
    E321: TMenuItem;
    E341: TMenuItem;
    E361: TMenuItem;
    E381: TMenuItem;
    ListBox1: TListBox;
    procedure E301Click(Sender: TObject);
    procedure E321Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i:integer;
  podstaw:string;
  seria:string;
  E30:array[0..17] of String = (('316: R4 1,8 l (1767 cm3), SOHC'), ('316i: R4 1,6 l (1596 cm3), SOHC'),('318: R4 1,8 l (1767 cm3), SOHC'), ('318i: R4 1,8 l (1796 cm3), SOHC'), ('318iS: R4 1,8 l (1796 cm3), SOHC'), ('320i: R6 2,0 l (1991 cm3), SOHC'), ('320iS: R4 2,0 l (1991 cm3), DOHC'), ('323i: R6 2,3 l (2316 cm3), SOHC'), ('325i: R6 2,5 l (2494 cm3), SOHC'), ('325is: R6 2,7 l (2693 cm3), SOHC'), ('325e: R6 2,7 l (2693 cm3), SOHC'), ('333i: R6 3,2 l (3210 cm3), SOHC'), ('M3: R4 2,3 l (2302 cm3), DOHC'), ('M3 Evo II: R4 2,3 l (2302 cm3), DOHC'), (''), ('324d: R6 2,4 l (2443 cm3), SOHC'), ('324td: R6 2,4 l (2443 cm3), SOHC, turbo'), ('325td: R6 2,5 l (2498 cm3), SOHC, turbo'));
  E32:array[0..4] of String = (('730i: R6 3,0 l (2986 cm3), SOHC'), ('730i: V8 3,0 l (2997 cm3), DOHC'), ('730i: R6 3,4 l (3430 cm3), SOHC'), ('740i: V8 4,0 l (3982 cm3), DOHC'), ('750i: V12 5,0 l (4988 cm3), SOHC'));
  DE30:array[0..2] of String = (('V-max: 175km/h'), ('V-max: 180km/h'), ('V-max: 183km/h'));
  DE32:array[0..4] of String = (('V-max: 225km/h'), ('V-max: 233km/h'), ('V-max: 238km/h'), ('V-max: 240km/h'), ('V-max: 249km/h'));
implementation

{$R *.dfm}

procedure TForm1.E301Click(Sender: TObject);
begin
seria:='DE30';
ListBox1.Clear;
for i:=0 to 17 do
  ListBox1.Items.Add(E30[i]);
end;

procedure TForm1.E321Click(Sender: TObject);
begin
seria:='DE32';
ListBox1.Clear;
for i:=0 to 4 do
  ListBox1.Items.Add(E32[i]);
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
ShowMessage(DE32[ListBox1.ItemIndex] );
end;

end.

To mój program. Zmienne np. E30, E32 posiadają jakie wersje jakie posiadały silniki. Zmienne np. DE30, DE32 mają dane zawierać o prędkości maksymalnej, przyśpieszeniu itd. i będą w jakiejś formie wyświetlane. I tak jak mamy teraz w programie 'na sztywno' ShowMessage(DE32[ListBox1.ItemIndex] ); to takie cudo mi działa. Mam wybrane BMW E32 to klikając na odpowiedni silnik dane dobrze się wyświetlają, ale wiadomo, serii jest ogrom i tworzyć if'y albo case'y to jest nie na łeb więc po to stworzyłem zmienną "seria" i teraz chciałbym się dowiedzieć czy idzie to połączyć ze sobą jak np. w php ("echo $seria+$costam"). Pewnie zauważycie, że jestem początkujący w Delphi :P

Pozostało 580 znaków

2015-01-09 20:45
1

Zrób sobie poprawną strukturę:

Data:array of record Mark:String; Data:array of record Seria:String; Data:array of record Engine:String; Power:Word; end; end; end;

Jak rozpiszesz to na części to będzie prościej.
No i wczytaj dane do tej struktury z pliku:

Marka1
-Seria11
--Silnik111 moc111
--Silnik112 moc112
--Silnik113 moc113
-Seria12
--Silnik121 moc121
--Silnik122 moc122
Marka2
-Seria21
...

Przy takiej strukturze znacznie uprości się całe "ogarnięcie".


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Deklaracja tych macierzy jest totalnie nieczytelna... - furious programming 2015-01-09 23:28
Stad ten wiersz: - "Jak rozpiszesz to na części to będzie prościej." - _13th_Dragon 2015-01-09 23:31
Zastanawiam się nad tym, czemu od razu nie podałeś czytelnego przykładu; - furious programming 2015-01-09 23:33
Aby mniej pisać. Jak pytający ma głowie na karku to tego mu wystarczy, a jak nie - to rozpisywanie tego niczego nie zmieni. Jak uważasz za słuszne to rozpisz to ... - _13th_Dragon 2015-01-09 23:37

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0