![]() |
Variable "P" ist möglicherweise nicht initialisiert worden
Hallo,
finde den Fehler nicht, warum soll P nicht initialisiert sein ?
Delphi-Quellcode:
Function mysin(const X: Extended):Extended; // Wrapper-Funktion, benötigt für Delphi 6 um Sinus-Funktion implementieren zu können
begin Result := sin(x); end; function THixHistoGraph.CalculatePointView // Berechnung der Punkte für die Funktionsdarstellung (AFunc: TFxFunction; const HistoBackround: TRect; x0, y0, dx, dy: Extended): TPointDynArray; var x, y: Extended; i : integer; begin // für jede Spalte einen Punkt SetLength(Result, HistoBackround.Right - HistoBackround.Left + 1); // Punkte berechnen x := 0; for i := Low(Result) to High(Result) do begin y := AFunc(x); y := -y; // Canvas Nullpunkt obere linke Ecke mit Y- Achse nach unten !!! y := y0 + y; // oberen Rand Addieren y := y / dy; // Skalieren Result[i].x := HistoBackround.Left + i; Result[i].Y := HistoBackround.Top + Round(y); // runden x := x + dx; end; // nächster Punkt end; procedure THixHistoGraph.DrawComponent; var ComponentBackround : TRect; // zeichnet Komponente HistoBackround : TRect; // zeichnet die Darstellungsfläche der Komponente begin if FBorderstyle = bsSingle then // mit 3D-Rahmen begin inherited; if (Parent = NIL) or not visible then Exit; begin ComponentBackround := Rect(0, 0, Width, Height); // Koponentenhintergrund Canvas.Brush.Color := FColor; Canvas.Pen.Color := FColor; Canvas.Pen.Style := psSolid; Canvas.FillRect(ComponentBackround); Frame3D(Canvas, ComponentBackround, clBtnHighlight, clBtnShadow, 1); // 3D Rahmen mit der Breite von 1 für Komponentenhintergrund end; begin HistoBackround := Rect(FGapLeft, // Hintergrund der Darstellungsfläche FGapTop, Width - FGapRight, Height - FGapBottom + 2); Canvas.Brush.Color := FHistoBkColor; Canvas.Pen.Color := FHistoBkColor; Canvas.FillRect(HistoBackround); Frame3D(Canvas, HistoBackround, clBtnShadow, clBtnHighlight, 1); DrawGrid; end; end; end; procedure THixHistoGraph.DrawMeasureValue; // Soll die Werte Zeichnen, die er von extern bekommt var x0, y0, dy, dx : Real; i : Integer; P : TPointDynArray; HistoBackround : TRect; begin HistoBackround := Rect(FGapLeft, // Hintergrund der Darstellungsfläche FGapTop, Width - FGapRight, Height - FGapBottom + 2); InflateRect(HistoBackround, -1, -1); for i:= round(ViewXNominalMin) to round(ViewXNominalMax - 1) do begin ViewXNominalMin := FViewXNominalMin; ViewXNominalMax := FViewXNominalMax; x0 := FViewxNominalMin; y0 := (Height - FGapBottom - FGapTop) / FYScale.ValMax; dx := 0.05; dy := 0.02; P := CalculatePointView(mySin, HistoBackround, x0, y0, dx, dy); Canvas.Pen.Style := psSolid; Canvas.Brush.Color := clLime; Canvas.Pen.Color := clLime; DrawPointView(Canvas, HistoBackround, P); //HIER DIE FEHLERMELDUNG end; end; |
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Jupp, vollkommen korrekt.
Wenn DrawPointView dort nicht zufällig einen OUT-Parameter deklariert hat, wo hast du P dann vorher etwas zugewiesen, was du dort übergeben würde? |
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Ja habe ich auch gerade gesehen, der hat ja gar Keine Länge :wall:
Im Prinzip muss ich doch, wenn ich externe Werte Darstellen will, erstmal diese in einem Array speichern und anschließend, je nachdem, wieviele Werte ich habe und wieviele Pixel mir zur Verfügung stehen übergeben.... Oder sehe ich das falsch ? |
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Hmmm, stand das
Delphi-Quellcode:
vorhin auch schon drin?
P := CalculatePointView(...
|
AW: Variable "P" ist möglicherweise nicht initialisiert worden
:-D ja, das tat es
|
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Ein Glück, ich dachte schon, ich sei jetzt völlig verblödet :-D
|
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Zitat:
Weshalb ? Ich bin doch hier die Krachlatte :stupid: |
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Weil ich die P-Zuweisung gesehen hatte und mich gefragt habe, wann denn der Fall eintreten könnte, dass sie nicht durchlaufen wird.
|
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Hatte beim ersten Mal die P-Zuweisung glatt übersehn.
Der Witz ist ja, daß dynamische Arrays eigentlich immer automatisch initialisiert sind, eben wegen deren automatischer Speicherverwaltung. Allerdings innerhalb von CalculatePointView ist das Result zwar initialisiert, aber nicht unbedingt leer (Result des vorherrigen Schleifendurchlaufs) Ein Bug im Compiler? :stupid: |
AW: Variable "P" ist möglicherweise nicht initialisiert worden
Haha, Leute Ihr verwirrt mich :feuerchen:
achso...aber, was is denn jetzt der Kasus Knacktus ? was is falsch oder, was muss ich machen, damit das funzt...? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz