![]() |
OOP Umwandlung eines Testprogrammes
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
durch einige Hinweise in einem anderen Thema ( ![]() Falls es mehrere Ansichten bezüglich der Umwandlung gibt, wäre es für mich schön, wenn statt Diskussion über einen anderen Beitrag, lieber eine neue Variante zur Verfügung gestellt würde. LG Mathias :-) |
AW: OOP Umwandlung eines Testprogrammes
Warum sollen andere die Arbeit für dich machen? :roll:
|
AW: OOP Umwandlung eines Testprogrammes
Schon recht dreist, oder?
|
AW: OOP Umwandlung eines Testprogrammes
Finde ich nicht schlimm, Vorschläge für Verbesserungen einzuholen.
Allerdings ist mir die "Fragestellung" zu unkonkret, so dass es für mich zu aufwendig wäre, das Projekt zu überarbeiten (und Records (um die es ja wohl auch geht) ohnehin nicht mein Fall sind). |
AW: OOP Umwandlung eines Testprogrammes
Zitat:
|
AW: OOP Umwandlung eines Testprogrammes
Vielleicht kannst Du Deine Frage oder Anliegen nochmal knapper fassen...
|
AW: OOP Umwandlung eines Testprogrammes
Wie es scheint will er eine globale Variable los werden. Geht's dabei evtl. um automatisch erzeugte Forms?
|
AW: OOP Umwandlung eines Testprogrammes
Zitat:
|
AW: OOP Umwandlung eines Testprogrammes
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) = 'EXCEPTION' then 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; |
AW: OOP Umwandlung eines Testprogrammes
Zitat:
Danke, Uwe, für das Beispiel. Ich verstehe es dennoch nicht. Was ist der Unterschied der drei Variablen, welche hier genutzt werden? *TFooMaker* ist doch am Ende auch wieder ein globales Konstrukt, welches in jeder Unit verfügbar ist, welche Unit2 einbindet? Und solange ich Unit2 nicht einbinde, wäre eine globale Variable (welche in Unit2 deklariert ist) in der jeweiligen Unit doch auch nicht sichtbar? LG Mathias |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz