Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Fehlermeldung beim Schreiben in der Registry (https://www.delphipraxis.net/208339-fehlermeldung-beim-schreiben-der-registry.html)

generic 31. Jul 2021 16:43

AW: Fehlermeldung beim Schreiben in der Registry
 
@Amalkotey
Dein Beitrag und Frage fande ich so interessant, dass ich so frei war und habe ein CodeReview gemacht.

In diesem Youtube-Video teile ich meine Gedanken zu dem Quelltext von dir mit dir/euch:
https://youtu.be/5Owfu_MstcU

Amalkotey 1. Aug 2021 12:08

AW: Fehlermeldung beim Schreiben in der Registry
 
@generic: Danke fü+r Deinen Beitrag.

venice2 1. Aug 2021 17:24

AW: Fehlermeldung beim Schreiben in der Registry
 
@generic
Feine Sache gut erklärt! :thumb:

Eins sollte man jedoch ändern wenn man vom Code her schon so penibel ist.

Delphi-Quellcode:
  If IsWow64 = True Then Begin
    Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY);
  End Else Begin
    Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_32KEY);
  End;
zu
Delphi-Quellcode:
  If IsWow64 Then
    Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY)
  Else
    Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_32KEY);

generic 2. Aug 2021 09:54

AW: Fehlermeldung beim Schreiben in der Registry
 
@venice2

Eigentlich hast du nur den Code anders formatiert.

In der C# Welt gibt es den Resharper, da kannst du den Formater richtig schön einstellen und dann ist das so wie es sein soll.
Dieser kann sogar die Reihenfolge von private und public Sachen in Klassen umstellen - Microsoft hat da Empfehlungen.

Aus diesem Grund kümmern sich die Teams wo ich arbeite nicht um sowas.
Auch die Einrück-Diskussion Tabs oder Spaces - 2 oder 4 gibt es nicht. Wenn jemand was anderes haben will, soll er sich es einstellen wie er will. Vor dem Commit ins GIT läuft ein Script, welches das auf die Team-Norm bringt.

Sowas wie den Resharper wünsche ich mir schon sehr lange für Delphi.

Wichtig ist nur, dass Team muss seinen einen Stil haben und Hauptsache es ist einheitlich im *ganzen* Projekt.

Persönlich mag ich deine Variante lieber.

Beide Varianten haben Vorteile:
deine Version - schlanker und evtl. besser zu lesen.
Amalkotey Version - schneller mit Code zu erweitern und weniger Chance was kaputt zu machen, wenn es z.B. verschachtelte IFs gibt.

DeddyH 2. Aug 2021 11:47

AW: Fehlermeldung beim Schreiben in der Registry
 
Wichtiger scheint mir der fehlerträchtige Vergleich mit true zu sein.

venice2 2. Aug 2021 11:53

AW: Fehlermeldung beim Schreiben in der Registry
 
Zitat:

Eigentlich hast du nur den Code anders formatiert.
Nein ich habe das True entfernt das ist der Entscheidende Faktor.
Und bei einer einfachen If Verschachtlung braucht man kein Begin .. End da reicht ein Else.
Zitat:

Zitat von DeddyH (Beitrag 1493125)
Wichtiger scheint mir der fehlerträchtige Vergleich mit true zu sein.

Richtig!

Auf der einen Seite schreibt er in seinem Beitrag
Delphi-Quellcode:
if not isUser

was ja auch korrekt ist.

Auf der anderen Seite könnte er es aber auch so schreiben
Delphi-Quellcode:
if isUser = False then

Das ist aber so wie du schreibst fehlerträchtig.

Es ging nicht um die Formatierung oder ob ein oder mehr Begin nötig sind sondern nur um die Prüfung auf "True"

freimatz 2. Aug 2021 11:56

AW: Fehlermeldung beim Schreiben in der Registry
 
:thumb:
Zitat:

Zitat von venice2 (Beitrag 1493093)
...
Eins sollte man jedoch ändern wenn man vom Code her schon so penibel ist.
... If IsWow64 Then
Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY)
Else
Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_32KEY);[/DELPHI]

Und wenn schon, denn schon ;-)
DRY - Don't repeat yourself. Also:
beim if nur KEY_WOW64_64KEY oder KEY_WOW64_32KEY in lokaler Variable speicher und danach nur 1x "TRegistry.Create(KEY_ALL_ACCESS "

venice2 2. Aug 2021 12:00

AW: Fehlermeldung beim Schreiben in der Registry
 
Zitat:

Zitat von freimatz (Beitrag 1493127)
:thumb:
Zitat:

Zitat von venice2 (Beitrag 1493093)
...
Eins sollte man jedoch ändern wenn man vom Code her schon so penibel ist.
... If IsWow64 Then
Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY)
Else
Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_32KEY);[/DELPHI]

Und wenn schon, denn schon ;-)
DRY - Don't repeat yourself. Also:
beim if nur KEY_WOW64_64KEY oder KEY_WOW64_32KEY in lokaler Variable speicher und danach nur 1x "TRegistry.Create(KEY_ALL_ACCESS "

Ich wollte nicht seinen Code umschreiben und habe ihn so übernommen.
Es ging nur um das Fail bzgl. auf True hin zu prüfen.
Der Rest hat mich nicht Interessiert da diese Create Methode im Nachhinein in seinem Video geändert wurde.

generic 2. Aug 2021 15:23

AW: Fehlermeldung beim Schreiben in der Registry
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hätte jetzt schwören können, dass der Compiler mit Optimierung
Code:
if a=true then
genau so behandelt wie
Code:
if a then
Aber es kommt was anderes raus:
Anhang 54226

Code:
if a<>false then
ist wie
Code:
if a then

freimatz 2. Aug 2021 15:46

AW: Fehlermeldung beim Schreiben in der Registry
 
Oh, jetzt bin ich baff. Ist die Optimierung aus? Oder so schlecht?
Nachtrag: liegt wohl daran, dass True so definiert ist: type Boolean = (False, True); True hat dann den Ordinalwert 1 und ist eben nicht immer not False.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.
Seite 2 von 3     12 3      

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