Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wieder ein Variablen Problem - komme nicht weiter. (https://www.delphipraxis.net/121566-wieder-ein-variablen-problem-komme-nicht-weiter.html)

AlexII 30. Sep 2008 13:49

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Zitat:

Zitat von DeddyH
Ich würde "cache" als Übergabeparameter definieren, dann kann m.E. nicht viel schiefgehen.

Kannst du mir das vielleicht bisschen näher erklären?

AlexII 30. Sep 2008 13:58

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
FiCountCorrect ist eine globale Variable und ist beim öffnen des Programms gleich Null. Somit wird die vierte Bedienung erfüllt, note auf 6 gesetzt und in der vorletzten Zeile wird cache auf 6 gesetzt. Wenn die Procedur das nächste mal ausgeführt wird ist FiCountCorrect=1 und die allerletzte Anweisung ist dran, und sie muss eigentlich funken, da beide Variablen schon gefüllt sind.

Oder spinne ich schon? :wall:

Luckie 30. Sep 2008 14:03

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Zitat:

Zitat von AlexII
FiCountCorrect ist eine globale Variable und ist beim öffnen des Programms gleich Null.

Ja, das mag ja alles so sein, aber woher soll der Compiler wissen, ob sich die globale Variable zwischen durch nicht ändert? Dann trifft die Bedingung nämlich nicht mehr zu und dann ist die Variable undefiniert. Und auf diese Tatsache weißt dich der Compiler mit der Warnung hin.

DeddyH 30. Sep 2008 14:03

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Delphi-Quellcode:
procedure TForm1.Note(cache: real); //so muss etwas übergeben wreden, cache ist also initialisiert
var
  note: Real;

Luckie 30. Sep 2008 14:05

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Warum ist cache dann initialisiert? Davon mal abgesehen, würde das Alex wohl komplett aus der bahn werfen, wenn er seine ganzen Code jetzt noch umbauen sollte.

AlexII 30. Sep 2008 14:09

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Zitat:

Zitat von Luckie
Ja, das mag ja alles so sein, aber woher soll der Compiler wissen, ob sich die globale Variable zwischen durch nicht ändert? Dann trifft die Bedingung nämlich nicht mehr zu und dann ist die Variable undefiniert. Und auf diese Tatsache weißt dich der Compiler mit der Warnung hin.

Die Variable FiCountCorrect wird immer vor der NoteProcedur geändert, somit weißt jeder wie sie lautet, der Compiler sowieso nehme ich an.

AlexII 30. Sep 2008 14:11

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Zitat:

Zitat von Luckie
Davon mal abgesehen, würde das Alex wohl komplett aus der bahn werfen, wenn er seine ganzen Code jetzt noch umbauen sollte.

Ich bin schon längst aus der Bahn, verstehe die Welt nicht mehr. Ist das mit dem Label3.Caption wenigsten richtig? Dann lasse ich das so und basta.

jfheins 30. Sep 2008 14:12

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Zitat:

Zitat von AlexII
FiCountCorrect ist eine globale Variable und ist beim öffnen des Programms gleich Null. Somit wird die vierte Bedienung erfüllt, note auf 6 gesetzt und in der vorletzten Zeile wird cache auf 6 gesetzt. Wenn die Procedur das nächste mal ausgeführt wird ist FiCountCorrect=1 und die allerletzte Anweisung ist dran, und sie muss eigentlich funken, da beide Variablen schon gefüllt sind.

Oder spinne ich schon? :wall:

Hä? Wenn die Procedure zum zweiten mal ausgeführt wird, sind die beiden lokalen Variablen doch nicht initialisiert, also funkt da nichts !?
Woher sind die denn bitte gefüllt? Vom vorherigen Aufruf?

(siehe auch #10 von Luckie ...)

nahpets 30. Sep 2008 14:15

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Hallo,
Zitat:

Zitat von AlexII
FiCountCorrect ist eine globale Variable und ist beim öffnen des Programms gleich Null. Somit wird die vierte Bedienung erfüllt, note auf 6 gesetzt und in der vorletzten Zeile wird cache auf 6 gesetzt. Wenn die Procedur das nächste mal ausgeführt wird ist FiCountCorrect=1 und die allerletzte Anweisung ist dran, und sie muss eigentlich funken, da beide Variablen schon gefüllt sind.

Oder spinne ich schon? :wall:

der Compiler weiss nicht, dass FiCountCorrect = 0, was ist denn, wenn FiCountCorrect = 42 (warum auch immer).
Der Compiler weist ja auch "nur" darauf hin, dass cache eventuell nicht initialisiert ist, er weist darauf hin, dass es Situationen geben kann, in denen cache nicht initialisiert ist. Bei den von Dir verwendeten (vermuteten) Werten ist cache halt initialisiert (Zufall?).

Bau doch am Anfang einfach direkt hinter dem ersten begin

Delphi-Quellcode:
cache := StrToFloat(Label3.Caption);
ein.
Zitat:

Zitat von AlexII
Die Variable FiCountCorrect wird immer vor der NoteProcedur geändert, somit weißt jeder wie sie lautet, der Compiler sowieso nehme ich an.

Irrtum, der Compiler muss davon ausgehen, dass die Funktion auch noch an jeder beliebigen anderen Stelle im Programm eingesetzt werden kann. Er betrachtet die Funktion absolut losgelöst von dem sie umgebenden Code.

Stephan

AlexII 30. Sep 2008 14:16

Re: Wieder ein Variablen Problem - komme nicht weiter.
 
Zitat:

Zitat von jfheins
Woher sind die denn bitte gefüllt? Vom vorherigen Aufruf?

Etwa nicht? :coder2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.
Seite 2 von 4     12 34      

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