Stahli, auch selbst wenn ich das Beispiel von Sir Rufo / DeddyH verstehen würde dann wärs vermutlich ein neues Programm? Dein ssFramework kenn ich vom Namen her hab es aber noch nie verwendet. Ist bestimmt sehr gut.
Ich lass es jetzt erst mal so. Sooo schlimm isses eigentlich nicht (wenn man so viel wie möglich wegkapselt). Mit meinem Codegenerator geht’s eigentlich ganz gut.
Delphi-Quellcode:
procedure TGraphicShape.DoSomething;
begin
if Util_LineWerkzeug(FTyp) then
case FTyp of
gtLine:
FLine.DoSomething;
gtCircleLine:
FCircleLine.DoSomething;
gtHelpLine:
FHelpLine.DoSomething;
gtArrow:
FArrow.DoSomething;
gtPos:
FPos.DoSomething;
gtPosition:
FPosition.DoSomething;
gtDimension:
FDimension.DoSomething;
gtGerade:
FGerade.DoSomething;
gtSchnitt:
FSchnitt.DoSomething;
gtAchse:
FAchse.DoSomething;
gtHint:
FHint.DoSomething;
gtPosHint:
FPosHint.DoSomething;
gtDoubleLine:
FDoubleLine.DoSomething;
end
else
if Util_PolygonWerkzeug(FTyp) then
case FTyp of
gtPolyLine:
FPolyLine.DoSomething;
gtPolygon:
FPolygon.DoSomething;
gtRubber:
FRubber.DoSomething;
gtNEck:
FNEck.DoSomething;
gtHelpPolygon:
FHelpPolygon.DoSomething;
gtHelpNEck:
FHelpNEck.DoSomething;
end
else
if Util_RectWerkzeug(FTyp) then
begin
case FTyp of
gtRect:
FRect.DoSomething;
gtCircle:
FCircle.DoSomething;
gtTriangle:
FTriangle.DoSomething;
gtAngleDimension:
FAngleDimension.DoSomething;
end
end
else
if Util_ProfilWerkzeug(FTyp) then
case FTyp of
gtI:
FI.DoSomething;
gtHalfI:
FHalfI.DoSomething;
gtU:
FU.DoSomething;
gtL:
FL.DoSomething;
gtZ:
FZ.DoSomething;
gtT:
FT.DoSomething;
gtPipe:
FPipe.DoSomething;
gtFrame:
FFrame.DoSomething;
gtEllipsePipe:
FEllipsePipe.DoSomething;
end
else
if Util_TextWerkzeug(FTyp) then
case FTyp of
gtText:
FText.DoSomething;
gtKote:
FKote.DoSomething;
end
else
if Util_GraphicWerkzeug(FTyp) then
case FTyp of
gtGraphic:
FGraphic.DoSomething;
end
else
if Util_ReinforcementWerkzeug(FTyp) or Util_ReinforcementPolygonWerkzeug(FTyp) then
case FTyp of
gtGeschlossenerBuegel:
FGeschlossenerBuegel.DoSomething;
gtOffenerBuegel:
FOffenerBuegel.DoSomething;
gtRandbuegel:
FRandbuegel.DoSomething;
gtOffenerBuegelExInnen:
FOffenerBuegelExInnen.DoSomething;
gtOffenerBuegelExAussen:
FOffenerBuegelExAussen.DoSomething;
gtKoecherbuegel:
FKoecherbuegel.DoSomething;
gtSteckbuegel:
FSteckbuegel.DoSomething;
gtStab:
FStab.DoSomething;
gtCircleStab:
FCircleStab.DoSomething;
gtWinkel:
FWinkel.DoSomething;
gtAufbiegung:
FAufbiegung.DoSomething;
gtStabPunkt:
FStabPunkt.DoSomething;
gtSchlaufe:
FSchlaufe.DoSomething;
gtSHaken:
FSHaken.DoSomething;
gtMatteVertikal:
FMatteVertikal.DoSomething;
gtMatteHorizontal:
FMatteHorizontal.DoSomething;
gtMatte:
FMatte.DoSomething;
gtApsta:
FApsta.DoSomething;
gtPolygonStab:
FPolygonStab.DoSomething;
end;
end;
Wenigstens "etwas"
RTTI kann ich nutzen.
Delphi-Quellcode:
function Util_TGraphicObjectTypToStr(const Value: TGraphicObjectTyp): string;
begin
Result := GetEnumName(TypeInfo(TGraphicObjectTyp), Ord(Value));
end;
function Util_TPropToStr(const Value: TProp): string;
begin
Result := GetEnumName(TypeInfo(TProp), Ord(Value));
end;
function Util_TActionToStr(const Value: TAction): string;
begin
Result := GetEnumName(TypeInfo(TAction), Ord(Value));
end;
LG
Thomas