Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.081 Beiträge
 
Delphi 12 Athens
 
#198

AW: SEPA Komponente gesucht

  Alt 21. Jul 2014, 16:31
Welche Felder meinst Du denn?
Am Einfachsten wäre es, wenn ich den aktuell nicht verfügbaren Kollegen fragen würde ... ist nur nicht ganz so einfach.

Verwendungszweck bekommst Du aus der SEPA-Doku.
Jaaaa, da war auch das Problem mit der Benamung, also daß man erstmal suchen mußte welches Feld zu den Property gehört.

[add]
Ich schau auch lieber nicht mehr in den QuellCode.
(das tut ja teilweise weh, aber egal ... Hauptsache es läuft )

Aber ein paar Kleinigkeiten erwähn ich schonmal:
  • Viele Funktionen bieten eigentlich alle Compiler (Delphi, FPC/Lazarus), so daß man sie auch ruhig verwenden darf, also vorallem F_Round und p_Str.
  • Auch der Code im DoubleToXML kann locker mit vorhandenen Standardfunktionen erfüllt werden, wie z.B. FloatToStr oder Format, mit passendem FormatSettings.
  • Zeile ... sLineBreak kennt man? Wobei es nicht ganz optimal ist, dieses in der XML zu verwenden. Nimm besser nur #10. (falls die Gegenseite ebenfalls das XML manuell behandelt und keine XML-Libs nutzt)
  • die Fehlerbehandlung: Wenn schon Fehlermeldungen, dann könnte man auch alles Melden.
    Und bitte die Meldungen etwas aussagefähiger/zuordenbarer benennen, denn in größeren Programmen wäre es nett, wenn man halbwegs erkennt wo die Meldung her kommt.
    Delphi-Quellcode:
    function IBAN_Check(IBAN: AFS_String):Boolean;
    ...
    begin
     ...
     if not ok then begin
      Warnung:='Land der IBAN ist falsch oder unbekannt';
      Exit;
     end;
     ...
     if Length(IBAN)<>4+sk+sb then begin
      Warnung:='Länge der IBAN ist falsch (Soll:'+IntToStr(4+sk+sb)+', Ist:'+IntToStr(Length(IBAN))+')';
      Exit;
     end;
     ban:=Copy(IBAN,5,255);
     ban:=ban+Copy(IBAN,1,4);
     ban:=SEPA_AplhaToInteger(ban);

     //LG: Wenn wir Warnungen ausgeben, dann machen wir das immer.
     if ModuloXY(ban,97) <> 1 then begin
       Warnung:='Prüfsumme der IBAN ist nicht korrekt.';
       Exit;
     end;

     result:=True;
    end;
  • Und ich empfehle dir, dich mal mit Conditional-Expression auseinanderzusetzen. Delphi versteht die bestimmt schon seit mindestens Delphi 7.
    Delphi-Quellcode:
    {$IF CompilerVersion >= 23.0}  // XE2
    [ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidOSX32
      {$IF CompilerVersion >= 25.0} or PidiOSDevice or PidiOSSimulator {$IFEND}  // XE4
      {$IF CompilerVersion >= 26.0} or pidLinux32 or pidAndroid {$IFEND}  // XE5
    )]
    {$IFEND}
    TAFS_SEPA = class(TComponent)
    Erstmal wird der Code dadurch kürzer und Übersichtlicher.
    Und der Code ist grundsätzlich schonmal auf Delphi XE7+ vorbereitet. (abgesehn von neuen Features, aber das Alte läuft wenigstens weiterhin, zu bestimmt 95%, solange Emba nicht wieder etwas aus- oder komplett umbaut)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Jul 2014 um 17:22 Uhr)
  Mit Zitat antworten Zitat