Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#9

AW: OOP Umwandlung eines Testprogrammes

  Alt 31. Mär 2020, 09:17
Wie man das umsetzt, hängt natürlich von den konkreten Gegebenheiten ab. Daher kann man keinen allgemeinen Ansatz vorgeben.

Eine Möglichkeit die globale Variable zu eliminieren ohne den Funktionsaufruf unnötig aufzublähen wäre eine Klasse:
Delphi-Quellcode:
unit Unit2;

interface

uses
  system.StrUtils,
  system.Sysutils;

type
  TSettings = record
    Show_Errors: Boolean;
    Show_Questions: Boolean;
    Delete_Fields: Boolean;
  end;

type
  TResult = record
    String_1: string;
    String_2: string;
    initFoo_MultiUser: Boolean;
    initFoo_Done: Boolean;
    initFoo_Error: Boolean;
  end;

type
  TFooMaker = class
  private
    FSettings: TSettings;
  public
    constructor Create(const ASettings: TSettings);
    function init_FOO(const _FooFileName, _FooDatabaseName: string; _FooMultiUser: Boolean = True): TResult;
    property Settings: TSettings read FSettings;
  end;

const
  BR = #13#10;
  DBR = BR + BR;

implementation

constructor TFooMaker.Create(const ASettings: TSettings);
begin
  inherited Create;
  FSettings := ASettings;
end;

function TFooMaker.init_FOO(const _FooFileName, _FooDatabaseName: string; _FooMultiUser: Boolean = True): TResult;
var
  StringTest: string;
begin
  try
    Result.String_1 := _FooFileName;
    Result.String_2 := _FooDatabaseName;
    Result.initFoo_MultiUser := _FooMultiUser;
    Result.initFoo_Done := (Trim(_FooFileName) <> '') and (Trim(_FooDatabaseName) <> '');

    if Trim(_FooFileName) = 'EXCEPTIONthen
    begin
      StringTest := '';
      StringTest := StringTest[1];
      Result.initFoo_Done := True;
    end;

    Result.initFoo_Error := False;
  except
    if Settings.Show_Errors then
      Result.initFoo_Error := True;
    Result.initFoo_Done := False;
  end;
end;

end.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fooMaker: TFooMaker;
  myResult: TResult;
  mySettings: TSettings;
begin
  mySettings.Show_Errors := true;
  mySettings.Show_Questions := false;
  mySettings.Delete_Fields := false;

  fooMaker := TFooMaker.Create(mySettings);
  try
    myResult := fooMaker.init_FOO('Test', 'Test 1');
    Result2Memo(myResult);

    myResult := fooMaker.init_FOO('Hallo', 'Test 2', false);
    Result2Memo(myResult);

    myResult := fooMaker.init_FOO('EXCEPTION', 'Test 3', true);
    Result2Memo(myResult);

    myResult := fooMaker.init_FOO('EXCEPTION', 'Test 4', false);
    Result2Memo(myResult);
  finally
    fooMaker.Free;
  end;

  Memo1.SetFocus;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat