Zachęcony do programowania obiektowego, zacząłem trochę dłubać i powolutku próbuje zrozumieć o co w tym wszystkim chodzi. Oczywiście wciąż mam duże problemy dlatego proszę o dozę wyrozumiałości w tłumaczeniu pewnym aspektów ;)
Postanowiłem ostatnio pobawić się trochę w Lazarusie, a jako, że studiuję filologię i pasjonuję się językami to postanowiłem zrobić prosty program, w którym mógłbym wpisać czasownik, a program sam by to słowo odmienił.
a tutaj kod. I mam takie pytanie
Jak dodawać wyjątki od reguł? Tworzyć nowe funkcje czy tak jak teraz to robiłem czyli jedna pod drugą? Wydaje mi się to mocno ślamazarne, ale nie bardzo miałem pomysł jak to ogarnąć może poza jakimś if'em.
Z góry dziękuję za pomoc :)
/ Edit: zaznaczam, że w kodzie mogą pojawiać się zmienne nieużyte w programie. To efekt tego, że kombinuję ciągle i bawię się na różne sposoby jak to zrobić :)
unit unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, StrUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TMainForm }
TMainForm = class(TForm)
btnOK: TButton;
lblFirstSingularPresentIndicative: TLabel;
lblSecondSingularPresentIndicative: TLabel;
lblThirdSingularPresentIndicative: TLabel;
lblFirstPluralPresentIndicative: TLabel;
lblSecondPluralPresentIndicative: TLabel;
lblThirdPluralPresentIndicative: TLabel;
VerbEdit: TEdit;
PersonBox: TGroupBox;
lblFirstSingular: TLabel;
lblSecondSingular: TLabel;
lblThirdSingular: TLabel;
lblFirstPlural: TLabel;
lblSecondPlural: TLabel;
lblThirdPlural: TLabel;
procedure btnOKClick(Sender: TObject);
procedure PersonBoxClick(Sender: TObject);
procedure VerbEditChange(Sender: TObject);
private
public
end;
var
MainForm: TMainForm;
StringLenght: Integer;
Verb: String;
k: String;
L: Integer;
X : Boolean;
implementation
{$R *.lfm}
{ TMainForm }
procedure TMainForm.VerbEditChange(Sender: TObject);
begin
Verb := Trim(LowerCase(VerbEdit.Text));
L := Length(Verb);
end;
procedure TMainForm.btnOKClick(Sender: TObject);
begin
X := AnsiEndsStr('are', Verb);
if X = true then
begin
Delete(Verb, L-2, 3);
lblFirstSingularPresentIndicative.Caption := LowerCase(Verb + 'o');
lblSecondSingularPresentIndicative.Caption := LowerCase(Verb + 'i');
lblThirdSingularPresentIndicative.Caption := LowerCase(Verb + 'a');
lblFirstPluralPresentIndicative.Caption := LowerCase(Verb + 'iamo');
lblSecondPluralPresentIndicative.Caption := LowerCase(Verb + 'ate');
lblThirdPluralPresentIndicative.Caption := LowerCase(Verb + 'ano');
end;
X := AnsiEndsStr('ere', Verb);
if X = true then
begin
Delete(Verb, L-2, 3);
lblFirstSingularPresentIndicative.Caption := LowerCase(Verb + 'o');
lblSecondSingularPresentIndicative.Caption := LowerCase(Verb + 'i');
lblThirdSingularPresentIndicative.Caption := LowerCase(Verb + 'a');
lblFirstPluralPresentIndicative.Caption := LowerCase(Verb + 'iamo');
lblSecondPluralPresentIndicative.Caption := LowerCase(Verb + 'ete');
lblThirdPluralPresentIndicative.Caption := LowerCase(Verb + 'ono');
end;
X := AnsiEndsStr('ire', Verb);
if X = true then
begin
Delete(Verb, L-2, 3);
lblFirstSingularPresentIndicative.Caption := LowerCase(Verb + 'o');
lblSecondSingularPresentIndicative.Caption := LowerCase(Verb + 'i');
lblThirdSingularPresentIndicative.Caption := LowerCase(Verb + 'e');
lblFirstPluralPresentIndicative.Caption := LowerCase(Verb + 'iamo');
lblSecondPluralPresentIndicative.Caption := LowerCase(Verb + 'ite');
lblThirdPluralPresentIndicative.Caption := LowerCase(Verb + 'ono');
end;
end;
procedure TMainForm.PersonBoxClick(Sender: TObject);
begin
end;
end.