Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EAccess Violation Fehler (https://www.delphipraxis.net/111520-eaccess-violation-fehler.html)

Bx3 4. Apr 2008 16:58


EAccess Violation Fehler
 
Liste der Anhänge anzeigen (Anzahl: 2)
hab schon wieder nen prob und es nich in der suche verständlich erklärt gefunden,
nen bild von dem fehler und der anzeige bei welcher stelle es sein soll hab ich mit
rangehangen, und noch ein bissl quelltext - ich raff den fehlker einfach nich

Code:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, Buttons, jpeg;

type
  TStrassenInfo = class(TForm)
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    procedure FormActivate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  StrassenInfo: TStrassenInfo;
  k,m:byte;

implementation

uses Unit1;

{$R *.DFM}

procedure TStrassenInfo.FormActivate(Sender: TObject);
 var x:byte;
begin
 For x:=1 to 4 do
  (Findcomponent('Image'+intToStr(x))as TImage).visible:=false;
 k:=Unit1.k;
 (Findcomponent('Image'+intToStr(k+1))as TImage).visible:=true;
 For x:=1 to 28 do
  If Unit1.Strasse[x].nr = Unit1.Spiela[k].stand then
   m:=x;
 Panel1.Caption:=(Unit1.Strasse[m].Name);
 If Unit1.Strasse[m].verkauft = 0 then
  BitBtn1.enabled:=true;
end;

procedure TStrassenInfo.BitBtn1Click(Sender: TObject);
begin
 (Form1.Findcomponent('combobox'+intToStr(Unit1.k))as Tcombobox).items.add(Unit1.Strasse[m].Name);
 Unit1.Spiela[k].Guthaben:=(Unit1.Spiela[k].Guthaben)-(Unit1.Strasse[m].Wert);
 (Form1.Findcomponent('panel'+intToStr(6+k))as TPanel).caption:=floattostr(Spiela[k].Guthaben);
 BitBtn1.enabled:=false;
 Unit1.Strasse[m].verkauft:=1;
end;

procedure TStrassenInfo.BitBtn2Click(Sender: TObject);
begin
 Strasseninfo.close;
end;

end.
und von der stelle wo die unit3 aufgerufen wird
Code:
procedure stehen(var p,q,k:byte);
 var x:byte;
begin
.
.
.
 For x:=1 to 4 do
  begin
   If k <> x then
    If Spiela[k].stand = Spiela[x].stand then
     begin
      p:=p+5;
      q:=q+5;
     end;
  end;
 For x:=1 to 28 do
  If Strasse[x].nr = Spiela[k].stand then
   StrassenInfo.show;
end;
Form3 hab ich Strasseninfo genannt

STS301 4. Apr 2008 17:01

Re: EAccess Violation Fehler
 
unit3 in die Uses List aufnehmen

Bx3 4. Apr 2008 17:09

Re: EAccess Violation Fehler
 
is sie schon

DeddyH 4. Apr 2008 17:19

Re: EAccess Violation Fehler
 
Wie ist Spiela definiert?

shmia 4. Apr 2008 17:23

Re: EAccess Violation Fehler
 
Hier ist gefährlicher Code:
Delphi-Quellcode:
For x:=1 to 4 do
  (Findcomponent('Image'+intToStr(x))as TImage).visible:=false;
Es könnte ja sein, dass es Image4 nicht gibt; dann Zugriffsverletzung.
so wird die Sache entschärft:
Delphi-Quellcode:
var
  c : TComponent;
...
For x:=1 to 4 do
begin
  c := Findcomponent('Image'+intToStr(x));
  Assert(Assigned(c));
  (c as TImage).visible:=false;
end;

Bx3 4. Apr 2008 17:35

Re: EAccess Violation Fehler
 
gute idee, habe jetze die stelle entschärft und der fehler kommt nich mehr so zeitig,
allerdings is jetze einer 100%ig hier an der stelle:

Delphi-Quellcode:
procedure TStrassenInfo.BitBtn1Click(Sender: TObject);
begin
 (Form1.Findcomponent('combobox'+intToStr(Unit1.k))as Tcombobox).items.add(Unit1.Strasse[m].Name);
 Unit1.Spiela[k].Guthaben:=(Unit1.Spiela[k].Guthaben)-(Unit1.Strasse[m].Wert);
 (Form1.Findcomponent('panel'+intToStr(6+k))as TPanel).caption:=floattostr(Spiela[k].Guthaben);
 BitBtn1.enabled:=false;
 Unit1.Strasse[m].verkauft:=1;
end;
sobald ich diesen button drücke verabschiedet sich delphi^^

Bx3 4. Apr 2008 17:39

Re: EAccess Violation Fehler
 
hab die zeile, is die hier:
Delphi-Quellcode:
 (Form1.Findcomponent('combobox'+intToStr(Unit1.k))as Tcombobox).items.add(Unit1.Strasse[m].Name);
aber warum??

DeddyH 4. Apr 2008 17:39

Re: EAccess Violation Fehler
 
Das ist doch dasselbe in grün.

Bx3 4. Apr 2008 17:47

Re: EAccess Violation Fehler
 
was is mit grün??

DeddyH 4. Apr 2008 17:48

Re: EAccess Violation Fehler
 
Ich meinte damit, Du kannst den Code von shmia doch hierher übertragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr.
Seite 1 von 2  1 2      

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