Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi global Variablen, Mehrfachdeklaration (https://www.delphipraxis.net/99363-global-variablen-mehrfachdeklaration.html)

s-off 12. Sep 2007 14:00

Re: global Variablen, Mehrfachdeklaration
 
Zitat:

Zitat von mschaefer
Sagt mal bei aller liebgewonnenen Zynik, warum lässt man nicht den Compiler suchen?

Prinzipiell eine schöne Sache, aber...

Zitat:

Zitat von mschaefer
Nimm doch einfach alle globale Variable und nenne diese um im Stil von "Unitnamen_Variablennamen" und versuche zu compilieren.

...möchtest Du alle globalen Variablen umbenennen, die über x Dateien verteilt sind?

Zitat:

Zitat von mschaefer
Jedenfalls in Map-Files suchen scheint mir doch eher Zeitvertreib zu sein.

Hier sicher die einfachste Möglichkeit, alle Doppeldeklarationen sicher zu entdecken.

Zitat:

Zitat von mschaefer
Ein Tool wird kaum entscheiden können welche der doppelten Globalvariablen im Kontext nun genau hingehört.

Wie ich bereits sagte.

Fazit:
Man kann durch Analyse des Map-Files sämtliche Doppeldeklarationen aufdecken; ab da geht es allerdings per pedes weiter.

mschaefer 12. Sep 2007 14:45

Re: global Variablen, Mehrfachdeklaration
 
[quote="s-off"]
Zitat:

Zitat von mschaefer
...möchtest Du alle globalen Variablen umbenennen, die über x Dateien verteilt sind?

Ok über die Map-Files kann man ja reden, aber prinzipiell würde ich tatsächlich in Betracht ziehen, die Variabeln mit einer systematik Projektweit umzubenennen. Das liegt daran, dass meine Projekte bisher immer wieder erweitert wurden und ich muß mich darauf verlassen, dass sowas nicht passieren kann. Das würde jede Zeitplanung sabotieren. Jemand der so ein Unsinn verzapft würde wohl auch nicht lange in meinem Projekten mitarbeiten.

Grüße // Martin

s-off 12. Sep 2007 14:56

Re: global Variablen, Mehrfachdeklaration
 
Zitat:

Zitat von mschaefer
Ok über die Map-Files kann man ja reden, aber prinzipiell würde ich tatsächlich in Betracht ziehen, die Variabeln mit einer systematik Projektweit umzubenennen.

Da möchte ich Dir auch gar nicht widersprechen; das wäre natürlich eine sehr schöne Lösung. Nur denke ich, dass das automatische Umbenennen sämtlicher globaler Variablen ein nicht weniger großes Problem darstellt, als die Bereinigung der bekannten Doppeldeklarationen.
Zwar bedarf es hier keiner besonderen Logik, nur stehen wir hier vor dem Problem, den Delphi Code parsen zu müssen, was sicherlich nicht ganz anspruchslos ist, und man so auch wieder nicht um ein separates Tool herum kommt.

Zitat:

Zitat von mschaefer
Jemand der so ein Unsinn verzapft würde wohl auch nicht lange in meinem Projekten mitarbeiten.

Darum ist es ja vielleicht auch sein Vorgänger :mrgreen:

WS1976 13. Sep 2007 05:14

Re: global Variablen, Mehrfachdeklaration
 
Hi alle,

mein Vorgänger ist oder war (ich weiss nicht ob er noch, als Programmierer, existiert) ein professioneller Programmierer. Die Source wurde in einer externen Softwareschmiede 1998 erstellt. Bei Ihm und seiner Beurteilung bin ich jedenfalls sehr vorsichtig da er sehr tricky programmiert hat und meist irgendein (hinterlistiger) Sinn darin steckt.

Hallo Amateurprofi:
nochmal, dass das ganz klar ist:
bei den Mehrfachdeklaration wird nicht die erste oder die letzte genommen, sondern die sind gleichberechtigt nebeneinander vorhanden. Sogar die Unit-Reihenfolge in der uses Klausel der zugreifenden Unit ( ihr wisst was ich meine ) spielt keine Rolle.
Welche der Compiler wo wann nimmt ist scheinbar purer Zufall.
Eine zweite Sache ist noch der Debugger, der macht nochmal was er will.

Ich jedenfalls werde mich des Mapfiles bedienen!

Grüsse
Rainer

guidok 13. Sep 2007 06:06

Re: global Variablen, Mehrfachdeklaration
 
Zitat:

bei den Mehrfachdeklaration wird nicht die erste oder die letzte genommen, sondern die sind gleichberechtigt nebeneinander vorhanden. Sogar die Unit-Reihenfolge in der uses Klausel der zugreifenden Unit ( ihr wisst was ich meine ) spielt keine Rolle.
Welche der Compiler wo wann nimmt ist scheinbar purer Zufall.
Bist du dir da sicher?

Wenn du in Delphi ein neues Projekt beginnst werden ja standardmäßig in der uses-Klausel einige Units eingebunden unter anderem "windows" VOR "graphics" und eben in diesen beiden Units wird ein Typ namens TBitmap deklariert. Im weiteren Programmierverlauf wird aber immer die, in den meisten Fällen, richtige TBitmap aus graphics verwendet.

mschaefer 13. Sep 2007 19:19

Re: global Variablen, Mehrfachdeklaration
 
Moin, moin

Soweit ich das mit meinen Projekten beobachtet habe
werden zunächst die Units aus dem aktuellen Projekt genommen, dann die Units aus den Biblitheken .

Viele Grüße // Martin


PS: Wenn ich "tricky" programmieren will nehme ich C, Perl oder SAS-Macros.
Einigermassen übersichtlich, Kommentare und eine aufgeräumte Unit- und Objektstruktur sind mir inzwischen viel näher.

PPS: Natürlich kann man auch in Delphi Tricky programmieren. Gerade mit Pointern kann man da schöne Optimierungen machen und in der Listenprogrammierung kommt man oft nicht ohne aus. Für die meisten Aufgaben schätze ich das aber weniger. Im Team ist es oft wichtiger, dass alle schnell vertsehen welche Abläufe stattfinden damit Programmieren nicht zm Selbstzweck und zur Beschäftigungstherapie des Kollegen wird.

(Da es nicht das Threatthema ist, sind es nur Postscriptum-Anmerkungen)

s-off 13. Sep 2007 19:42

Re: global Variablen, Mehrfachdeklaration
 
Zitat:

Zitat von mschaefer
PS: Wenn ich "tricky" programmieren will nehme ich C, Perl oder SAS-Macros. Einigermassen übersichtlich, Kommentare und eine aufgeräumte Unit- und Objektstruktur sind mir inzwischen viel näher.

Willst Du damit ausdrücken, dass es mit Delphi nicht möglich ist, 'tricky' zu programmieren?

Amateurprofi 13. Sep 2007 19:53

Re: global Variablen, Mehrfachdeklaration
 
Zitat:

Zitat von WS1976
Hi alle,

mein Vorgänger ist oder war (ich weiss nicht ob er noch, als Programmierer, existiert) ein professioneller Programmierer. Die Source wurde in einer externen Softwareschmiede 1998 erstellt. Bei Ihm und seiner Beurteilung bin ich jedenfalls sehr vorsichtig da er sehr tricky programmiert hat und meist irgendein (hinterlistiger) Sinn darin steckt.

Hallo Amateurprofi:
nochmal, dass das ganz klar ist:
bei den Mehrfachdeklaration wird nicht die erste oder die letzte genommen, sondern die sind gleichberechtigt nebeneinander vorhanden. Sogar die Unit-Reihenfolge in der uses Klausel der zugreifenden Unit ( ihr wisst was ich meine ) spielt keine Rolle.
Welche der Compiler wo wann nimmt ist scheinbar purer Zufall.Eine zweite Sache ist noch der Debugger, der macht nochmal was er will.

Ich jedenfalls werde mich des Mapfiles bedienen!

Grüsse
Rainer

Das, was ich jetzt gern schreiben würde, schreibe ich aus Gründen der Höflichkeit nicht.
Glaubst du denn ernsthaft, daß der Compiler quasi per Zufallsgenerator arbeitet ??
Ich glaube das nicht und (daß auch das ganz klar ist), die Verfasser der Delphi-Helpfiles glauben das offensichtlich auch nicht.

Zitat:

Mehrere und indirekte Unit-Referenzen

Die Reihenfolge der Units in der uses-Klausel bestimmt die Reihenfolge der Initialisierung dieser Units und wirkt sich auf die Suche des Compilers nach den Bezeichnern aus. Wenn zwei Units eine Variable, eine Konstante, einen Typ, eine Prozedur oder eine Funktion mit identischem Namen deklarieren, verwendet der Compiler die Deklaration der in der uses-Klausel zuletzt angegebenen Unit. Wollen Sie auf den Bezeichner in einer anderen Unit zugreifen, müssen Sie den vollständigen Bezeichnernamen angeben: Unitname.Bezeichner

WS1976 14. Sep 2007 10:05

Re: global Variablen, Mehrfachdeklaration
 
Hi Amateuerprofi,

Zitat:

Das, was ich jetzt gern schreiben würde, schreibe ich aus Gründen der Höflichkeit nicht.
Dieser Kommentar ist absolut überflüssig.

Zitat:

Glaubst du denn ernsthaft, daß der Compiler quasi per Zufallsgenerator arbeitet ??
Ich hab dás so nie behauptet und auch so nicht dargestellt.
Vielleicht solltest du, bevor du Kommentare abgibst, meinen Originalbeitrag lesen.
Ich habe mehr als 100 Units in denen die Reihenfolge der Uniteinträge beliebig ist. In
mehreren sind die gleichen Variablennamen (Unitglobal) definiert.

Tatsache ist:
Es ist völlig egal wo im Programm ich debugge ( hab mir die Variablen auch schon per label angeschaut, gleiches Ergebnis ), ich bekomme mal die richtigen und mal die falsche Variable angezeigt und das ist völlig wilkürlich.

Grüsse
Rainer

PS:

Amateurprofi 14. Sep 2007 18:06

Re: global Variablen, Mehrfachdeklaration
 
Zitat:

Zitat von WS1976
Hi Amateuerprofi,

Zitat:

Das, was ich jetzt gern schreiben würde, schreibe ich aus Gründen der Höflichkeit nicht.
Dieser Kommentar ist absolut überflüssig.

Zitat:

Glaubst du denn ernsthaft, daß der Compiler quasi per Zufallsgenerator arbeitet ??
Ich hab dás so nie behauptet und auch so nicht dargestellt.Vielleicht solltest du, bevor du Kommentare abgibst, meinen Originalbeitrag lesen.
Ich habe mehr als 100 Units in denen die Reihenfolge der Uniteinträge beliebig ist. In
mehreren sind die gleichen Variablennamen (Unitglobal) definiert.

Tatsache ist:
Es ist völlig egal wo im Programm ich debugge ( hab mir die Variablen auch schon per label angeschaut, gleiches Ergebnis ), ich bekomme mal die richtigen und mal die falsche Variable angezeigt und das ist völlig wilkürlich.

Grüsse
Rainer

PS:

@ws1976

Wenn du das so nie behauptet hast, wie soll denn der Satz "Welche der Compiler wo wann nimmt ist scheinbar purer Zufall." sonst zu verstehen sein.
Es war auch nicht gefragt, was der Debugger anzeigt, sondern wie der Compiler den Source-Code umsetzt.
Und der Compiler benutzt weder die Deklarationen der zuerst genannten Unit noch überläßt er es dem Zufall, welche Deklarationen er verwendet sondern er benutzt immer die Deklarationen der zuletzt genannten Unit.
Vielleicht solltest du, bevor du Kommentare abgibst, deinen Originalbeitrag lesen......


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.
Seite 3 von 4     123 4      

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