AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mein Programmierstyl

Ein Thema von Martin W · begonnen am 17. Apr 2006 · letzter Beitrag vom 19. Apr 2006
 
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#11

Re: Mein Programmierstyl

  Alt 19. Apr 2006, 09:32
Die Pascal-Fehler sind wohl langsam abgegrast, jetzt kommt .Net an die Reihe .
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.Menus, System.ComponentModel, Borland.Vcl.XPMan,
  Borland.Vcl.ComCtrls, Borland.Vcl.StdCtrls, System.Xml.Serialization,
  System.IO, Borland.Vcl.ExtCtrls, Borland.Vcl.StrUtils, IdBaseComponent,
  IdComponent, IdTCPServer;
Puh... Solange du nicht gerade eine große bestehende Anwendung auf .Net übertragen willst (was ich nicht glaube), solltest du die Finger von diesem VCL.Net-Zeugs nehmen. Die Dateigröße wirds dir danken, Mono ebenfalls, ich will gar nicht wissen, wie viele versteckte P/Invokes und andere Artefakte darin lauern und verspreche dir, dass du für jede einzelne Klasse der RTL/VCL ein Äquivalent in der FCL finden wirst, das zudem meistens auch noch objektorientierter ist.

Delphi-Quellcode:
type
  TDialogType = (dtOpen, dtSave);
Den T-Präfix darfst du ab nun reinen Gewissens wegsperren. Ein Enum-Präfix ist ungewöhnlich und in anderen .Net-Dialekten überflüssig, aber da diese mit Delphi.Net wohl weiterhin mit
dtOpen statt mit
DialogType.Open angesprochen werden können, kann man das wohl gelten lassen.

Delphi-Quellcode:
Tserver_mainform_form = class(TForm)
    MainMenu1: TMainMenu;
    geg1: TMenuItem;
    Beenden1: TMenuItem;
    Einstellungen1: TMenuItem;
    [...]
Erstmal durch ein Winform ersetzen, dann die entsprechenden Framework-Komponenten benutzen.

Delphi-Quellcode:
  TProfilDetails = class
  public
    Name: String;
  end;
Ein öffentliches Feld? Das ist sowhl in unmanaged als auch managed Code pöse .

Delphi-Quellcode:
var
  server_mainform_form: Tserver_mainform_form;
  Profil: TProfil;
  TcpServerPreferences: TTcpServerPreferences;
  Log: TLog;
  ServerBefehle: TServerBefehle;
Dito. entweder in die Mainform oder eine statische Klasse.

resourcestring Ich weiß nicht, was der Compiler damit macht, aber es ist auf jeden Fall veraltet. Dafür gibt es Resourcendateien und die ResourceManager-Klasse.

Sender.Lines.Add(timetostr(now) + ' : ' + TextMessage); Wie Robert schon sagte: Format. Ohne VCL.Net ist es dann Delphi-Referenz durchsuchenString.Format.

Delphi-Quellcode:
TLog = class
  private
    procedure ClearLog(Sender: TMemo);
    procedure AddMessageToLog(Sender: TMemo; TextMessage: string);
  end;
  TServerBefehle = class
  private
    procedure StopServer;
  end;
Da die Klassen keine Felder besitzen, nimm Klassenmethoden. Allerdings würde ich eher die Log-Klasse den Log verwalten lassen, z.B. in einer StringCollection. Dazu noch eine Methode zum Ausgeben in eine TextBox.

for i := 0 to length(TcpServerPreferences.Bindings) - 1 do Verabschiede dich von diesen hässlichen for-Schleifen, es gibt nun for-in-Schleifen .

.Free; Du willst massenweise Objekte freigeben, die überhaupt nicht IDisposable einbinden, was soll da passieren?
Garbage Collection

if FileExists(AFilename) = False then if not File.Exists(aFileName) then RightStr(AFilename, 4) String.SubString bzw. Path.GetExtension

function Tserver_mainform_form.CopyFile(AFileFrom: string; AFileTo: string): boolean; File.Copy

Die restlichen Ersetzungen von VCL-Klassen/Prozeduren liste ich nicht auf, die kannst du mithilfe des SDKs selbst ziemlich schnell korrigieren.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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-2025 by Thomas Breitkreuz