Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Klasse: HTTPDownloader... (https://www.delphipraxis.net/133323-klasse-httpdownloader.html)

himitsu 30. Apr 2009 00:02

Re: Klasse: HTTPDownloader...
 
in C sind es nur Sprungmarken, aber in Delphi wird da automatisch rausgesprungen ... ist eher mit mehreren IFs vergleichbar.


Delphi-Quellcode:
case x of
  1: begin
       a;
     end;
  2: begin
       b;
     end;
  3: begin
       c:
     end;
  else begin
         e;
       end;
end;

// entspricht (nur ohne mehrfachen vergleich)

if x = 1 then begin
  a;
end else if x = 2 then begin
  b;
end else if x = 3 then begin
  c;
end else begin
  e;
end;

shmia 30. Apr 2009 15:55

Re: Klasse: HTTPDownloader...
 
Wirf das Property ProcessMessages mal komplett aus der Klasse raus.
Wenn jemand seine Applikation mit Application.ProcessMessages am Leben erhalten möchte,
dann kann er das doch im Event OnDownloadWork tun.
Es ist je nach Kontext (VCL-Anwendung, Non-VCL-Anwendung, Konsolenanwendung) die Aufgabe des Benutzers der Klasse dies zu tun.
Damit kann man auch die Unit Forms aus dem Uses-Abschnitt entfernen.

Real-TTX 30. Apr 2009 19:48

Re: Klasse: HTTPDownloader...
 
k, jetzt wo du es sagst.. Ich nehms sofort raus. Ist ja peinlich :)

Danke & Gruß
Real-TTX

Apollonius 30. Apr 2009 19:57

Re: Klasse: HTTPDownloader...
 
Zitat:

Zitat von himitsu
Delphi-Quellcode:
if @DownloadBegin <> nil then
  DownloadBegin(CurrentDownload);

if @DownloadEnd <> nil then
  DownloadEnd(CurrentDownload);

if @DownloadWork <> nil then
  begin
dieses ist immer <> nil, denn die Variablen sind immer vorhanden
Delphi-Quellcode:
if Assigned(DownloadBegin) then
  DownloadBegin(CurrentDownload);

if Assigned(DownloadEnd) then
  DownloadEnd(CurrentDownload);

if Assigned(DownloadWork) then
  begin

// und wenn schon NIL, dann eher so
if Pointer(DownloadBegin) <> nil then
  DownloadBegin(CurrentDownload);

Ein einfaches @ ermittelt den eigentlichen Wert des Methodenzeigers, erst @@ die Adresse. Das klingt seltsam, ist aber so. Insofern ist auch der ursprüngliche Code korrekt.

Insgesamt finde ich die Benennungskonventionen im Code etwas seltsam. Normalerweise erhält das hinter einem Property stehende Feld als Name einfach ein f und den Namen der Eigenschaft. Präfixe wie bol-, int- usw. halte ich für unpraktisch.

Namenloser 30. Apr 2009 20:03

Re: Klasse: HTTPDownloader...
 
Zitat:

Zitat von Apollonius
Insgesamt finde ich die Benennungskonventionen im Code etwas seltsam. Normalerweise erhält das hinter einem Property stehende Feld als Name einfach ein f und den Namen der Eigenschaft. Präfixe wie bol-, int- usw. halte ich für unpraktisch.

Zitat:

Zitat von Real-TTX
bei der Mehrfachverzweigung habe ich Begin End genommen weil es ohne nicht ging?
Und muss man da nicht normalerweise auch break benutzen, da es nur dumme DOS Sprungmarken sind ?

Er kommt von C :stupid:

Mithrandir 1. Mai 2009 08:54

Re: Klasse: HTTPDownloader...
 
Zitat:

Zitat von NamenLozer
Er kommt von C :stupid:

Nee, von Perl... ;)

Real-TTX 1. Mai 2009 09:25

Re: Klasse: HTTPDownloader...
 
Zitat:

Zitat von Apollonius
Insgesamt finde ich die Benennungskonventionen im Code etwas seltsam. Normalerweise erhält das hinter einem Property stehende Feld als Name einfach ein f und den Namen der Eigenschaft. Präfixe wie bol-, int- usw. halte ich für unpraktisch.

Ich bin so eine Umfangreiche IDE noch nicht gewohnt :) Einfach mit der Maus über die Variable und schon sieht man von welchem Typ diese ist? Was ein unnötiger Luxus :P Darum auch die Bennenung. Als ich noch mit Perl/C gearbeitet habe: C in der Schule - Dort mussten wir einfach den Notepad von MS nutzen und Compiler & Linker selbst bedienen. Und Perl... Naja.. Gibts einfach keine IDE in der Art :)

Was für eine Bedeutung hätte der Präfix : "f" ?

Gruß, Real-TTX

mkinzler 1. Mai 2009 09:29

Re: Klasse: HTTPDownloader...
 
F steht für Field und wird für private Eigenschaften verwendet dazugehörige Properties dann ohen F

Delphi-Quellcode:
 TDemoKlasse = class
   private
     FName: string;
   published
     property Name: string read Fname write FName;
 end;

himitsu 1. Mai 2009 11:33

Re: Klasse: HTTPDownloader...
 
Da gibt es so inofizielle Formatierungsregeln/-hinweise, damit die Quellcodes halbwegs gleich aufgebaut/formatiert sind und somit jeder in fremden Codes erstmal einen leichteren Einblick bekommen kann (da er schonmal weiß was wofür steht)

Wie z.B. viele den Funktionsparametern ein a vorranstellen, Klassen mit T und Interfaces mit I beginnen ......

OK, bei mir haben Felder z.B. ein _ vorranstehn, da ich es mir vor Jahren so angewöhnt hatte und ich es übersichtlicher find (das auch andere Dinge mal mit F anfangen können)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz