AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wiederholtes Problem - BD7 vergißt Variableninhalte
Thema durchsuchen
Ansicht
Themen-Optionen

Wiederholtes Problem - BD7 vergißt Variableninhalte

Ein Thema von EccoBravo · begonnen am 10. Mär 2006 · letzter Beitrag vom 17. Mär 2006
 
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

Wiederholtes Problem - BD7 vergißt Variableninhalte

  Alt 10. Mär 2006, 14:22
Große Mecker über Delphi7 und große Frage an Euch

zum wiederholten Male
Ich habe in einer Komponente eine procedure, in der (globale) Variablen einen Wert haben,
und in einer Procedure dahinter, in der diese Variablen plötzlich keinen Wert mehr haben.

Delphi-Quellcode:
unit DiffBild;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ dieses ist eine Komponente
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

interface

uses
  Windows, SysUtils, Classes, Controls, ExtCtrls, Graphics, EB_Mathe;

type
    TDiffMat =record
        PixHeight : integer;
        PixWidth : integer;
        PixSize : single;
        SizeHeight : single;
        SizeWidth : single;
        Dat : TMatrix; //array of array of single;
        rangeMat : array of array of boolean;
    end;

  TDiffBild = class(TPaintBox)

  private
     Pix : integer;
     wSize, hSize : single;
     cF : integer;


  protected

  public
     Plan : TDiffMat;
     Film : TDiffMat;
     Diff : TDiffMat;
     globDiff : TDiffMat;
     lokDiff : TDiffMat;
     globGamma: TDiffMat;
     lokGamma : TDiffMat;
     fs: array[0..17] of TFarbScala;
     pMax : single;
     fMax : single;
  published
     procedure Initialisieren(PixWeit,PixHoch : integer; SizeWeit, SizeHoch, PixSize:single);
     procedure Bild(vx,vy:integer;Schwelle:single);
     procedure globDiffBild(vx,vy:integer;Schwelle:single);
     procedure lokDiffBild(vx,vy:integer;Schwelle:single);
   end;

procedure Register;

//##############################################################################

implementation

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure TDiffBild.Initialisieren(PixWeit,PixHoch : integer; SizeWeit, SizeHoch, PixSize:single);
var
    i : integer;
    zwischen : single;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    begin // hier werden alle Matrixgrößen festgelegt
        Plan.PixHeight := PixHoch;
        Plan.PixWidth := PixWeit;
        Plan.PixSize := PixSize;
        Plan.SizeHeight:= SizeHoch;
        Plan.SizeWidth := SizeWeit;
        SetLength(Plan.Dat,PixWeit+3,PixHoch+3);

        Film.PixHeight := PixHoch;
        Film.PixWidth := PixWeit;
        Film.PixSize := PixSize;
        Film.SizeHeight:= SizeHoch;
        Film.SizeWidth := SizeWeit;
        SetLength(Film.Dat,PixWeit+3,PixHoch+3);
        // Pixelgröße und Pixellage bestimmen
        PixSize:=(SizeWeit/PixWeit+SizeHoch/PixHoch)/2;
        Film.PixSize :=PixSize;
        cF := 1 + 256 + 256*256;
        SetLength(Diff.Dat,PixWeit+3,PixHoch+3);

        SetLength(globDiff.Dat,PixWeit+3,PixHoch+3);
        SetLength(lokDiff.Dat,PixWeit+3,PixHoch+3);
     end;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure TDiffBild.Bild(vx,vy:integer;Schwelle:single);
var
    i, j, k : integer;
    Maximum : single;
    zwischen : single;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    begin
        canvas.Pen.Mode:=pmCopy;
        // BildMalen
        for j := 1 to Film.PixHeight do // ** hier haben alle Variablen noch ihren Wert
        begin
            for i := 1 to Film.PixWidth do
            begin
                Diff.Dat[i,j]:=Film.Dat[i-vx,j-vy]- Plan.Dat[i-vx,j-vy];
                Canvas.Pixels[i,j]:=Diff.Dat[i,j];
            end;
        end;
    end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure TDiffBild.globDiffBild(vx,vy:integer;Schwelle:single);
var
    i, j, k : integer;
    Maximum : single;
    zwischen : single;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    begin
        canvas.Pen.Mode:=pmCopy;
        // BildMalen
        for j := 1 to Film.PixHeight do // ** und hier haben Film.PixHeight, Plan.Dat[i,j] ...
        begin // ** KEINEN Wert mehr!
            for i := 1 to Film.PixWidth do
            begin
                globDiff.Dat[i,j]:=Film.Dat[i-vx,j-vy] - Plan.Dat[i,j];
                Canvas.Pixels[i,j]:=globDiff.Dat[i,j];
            end;
        end;
    end;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure Register;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
begin
  RegisterComponents('EB_Graph', [TDiffBild]);
end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

end.
aufgerufen werden die Funktionen der Komponenten dieses Units im Hauptprogramm wie folgt:

Delphi-Quellcode:
...
DiffBild1.Initialisieren(512,512; 400, 400, 1);
DiffBild1.Bild(1, 1, 0.5);
DiffBild1.globDiffBild(1, 1, 0.5);
...
die Funktionen stehen im Hauptprogrann sogar tatsächlich hintereinander, sodaß zwischenzeitlich mit den Variablen nichts geschehen kann.
Gibt es solche Effekte in Delphi und wie kann man dagegen vorgehen?

Danke

E. B.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 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