[Delphi7] prosba o ocene i rady

Odpowiedz Nowy wątek
2006-12-15 08:10
madzia
0

Czesc wszystkim mam taka prosbe. Ponizej przedstawiam kod do stworzenia malego testu cos w stylu pytanie i odpowiedz.
powiem ze dziala (dane wczytuje z pliku INI)

1. co o nim sadzicie? moze dalo by sie to prosciej napisac?
jesli tak to co zmienic?
pytam dlatego iz potrzebuje to na zaliczenie

2. W niedalekiej przyszlosci wiem ze go bede miala udoskonalic i dodac do niego cos takiego by mozna bylo samemu bezposrednio z programu w prowadzac dane do pliku ini takie jak:
pytanie oraz odpowiedz poczym plik ini mialby sie aktualizowac cos na wzor
Edit1= podaj pytanie
Edit2= podaj odpowiedz
button1= zapisz do pliku
button2= anuluj
Tu prosba od czego zaczac, prosze o rady, moze jaki krotki zarys takiej instrukcji.

Z gory Serdecznie dziekuje.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  IniFile: TIniFile;
  pytanienumer, liczbapytan, i: Integer;
  pytania, odpowiedzi: array[1..100] of String;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  Form1.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  pytanienumer:= 1;
  IniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName)
   + 'config.ini');
    liczbapytan:= IniFile.ReadInteger('glowne', 'liczbapytan', 0);
    for i:=0 to liczbapytan do begin
      pytania[i]:= IniFile.ReadString('pytania', IntToStr(i), '');
    end;
    for i:=0 to liczbapytan do begin
      odpowiedzi[i]:= IniFile.ReadString('odpowiedzi', IntToStr(i), '');
    end;
  IniFile.Free;
  Label7.Caption:= pytania[pytanienumer];
  pytanienumer:= 2;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key=#13) then begin
    Button1.Click;
  end;
  if (Key=#27) then begin
    Form1.Close;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label7.Caption:= pytania[pytanienumer];
  if (lowercase(Edit1.Text)=lowercase(odpowiedzi[pytanienumer])) then begin
    Label5.Caption:= IntTOStr(StrToInt(Label5.Caption)+1);
  end else if (lowercase(Edit1.Text)<>lowercase(odpowiedzi[pytanienumer])) then begin
    Label6.Caption:= IntTOStr(StrToInt(Label6.Caption)+1);
  end;
  Edit1.Text:= '';
  pytanienumer:= pytanienumer + 1;
end;

end.

a oto plik Ini

[glowne]
liczbapytan=2
[pytania]
1=czy masz boba?
2=zong?
[odpowiedzi]
1=tak
2=nie

Pozostało 580 znaków

2006-12-15 09:20
0

oporcz tego ze nie masz if pytanie = 101 then lub if poytanie > 100 then pytanie := 0; lub 1
to prosciej sie da, ale w inna strone to jest brzydkieeeee

procedure TForm1.Button1Click(Sender: TObject);
begin
Label7.Caption:= pytania[pytanienumer];

if (lowercase(Edit1.Text)=lowercase(odpowiedzi[pytanienumer])) then begin
Label5.Caption:= IntTOStr(StrToInt(Label5.Caption)+1);
end else if (lowercase(Edit1.Text)<>lowercase(odpowiedzi[pytanienumer])) then begin
Label6.Caption:= IntTOStr(StrToInt(Label6.Caption)+1);
end;
Edit1.Text:= '';
pytanienumer:= pytanienumer + 1;
end;

moze byc
procedure TForm1.Button1Click(Sender: TObject);
begin
Label7.Caption:= pytania[pytanienumer];
if (lowercase(Edit1.Text)=lowercase(odpowiedzi[pytanienumer])) then
Label5.Caption:= IntTOStr(StrToInt(Label5.Caption)+1)
else
Label6.Caption:= IntTOStr(StrToInt(Label6.Caption)+1);
Edit1.Text:= '';
pytanienumer:= pytanienumer + 1;
end;

dodatkowo jak myslisz ze brzydjko wyglada procedura ladujaca napisz wlasna, moze bedzie prostsza skladniowo

Pozostało 580 znaków

2006-12-15 11:35
madzia
0

Dziekuje za rade - az tak brzydko to nie wyglada :-) a juz napewno jest prostszy

A odnosnie drugiego pytania, prosze o jakies podpowiedzi od czego zaczac i prosze o podpowiedzi i jesli to mozliwe to jakis szkic takiej instrukcji,
Jeszcze raz bardzo dziekuje

Pozostało 580 znaków

2006-12-15 13:30
0

eee pokombinuj z writestring czy jakos tak to bylo
Edit1= podaj pytanie
Edit2= podaj odpowiedz
button1= zapisz do pliku
button2= anuluj

jak to maja byc nowe pytania to s:tstrings; <=-var globalne
na poczatku programu s:=tstringlist.create;
s.loadfromfile(jak chcesz zaladowac plik);
s.add('pytanie = '+edit1.text);
s.add('odpowiedz = '+edit2.text);

na koncu programu s.savetofile(plik); s.free;

Pozostało 580 znaków

2006-12-15 13:32
0

eee pokombinuj z writestring czy jakos tak to bylo
Edit1= podaj pytanie
Edit2= podaj odpowiedz
button1= zapisz do pliku
button2= anuluj

jak to maja byc nowe pytania to s:tstrings; <=-var globalne
na poczatku programu s:=tstringlist.create;
s.loadfromfile(jak chcesz zaladowac plik);
s.add('pytanie = '+edit1.text);
s.add('odpowiedz = '+edit2.text);

na koncu programu s.savetofile(plik); s.free;

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