Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EAccessViolation beim initialisieren des formblattes (https://www.delphipraxis.net/158955-eaccessviolation-beim-initialisieren-des-formblattes.html)

Willi1960 9. Mär 2011 10:28

EAccessViolation beim initialisieren des formblattes
 
Hallo,
ich kann nach stundenlanger suche einfach meinen fehler nicht finden.
ich möchte lediglich das beim Start des programmes und wenn form2 aufgerufen ist meine Datei erscheint. Ich bekomme aber leider nur EAccess fehlermeldung



der weg den das programm abläuft ist kurz

Was mache ich falsch?

rapante 9. Mär 2011 10:44

AW: EAccessViolation beim initialisieren des formblattes
 
Hallo,

zunächst einmal wäre es schön wenn du deinen Quelltext in die Delphi-Codetags einschliessen würdest und dann noch vernünftig einrückst.
So kann man das ja niemandem zumuten ;)

Wo erzeugst du denn Form2?

WM_CLOSE 9. Mär 2011 10:48

AW: EAccessViolation beim initialisieren des formblattes
 
Da wäre doch die Empfehlung die Delphi-Tags zu benutzen: Das sit der Helm in der Leiste über dem Text.
Das macht es viel einfacher so ein langes Listing zu lesen.

Willi1960 9. Mär 2011 10:52

AW: EAccessViolation beim initialisieren des formblattes
 
sry für die unübersichtlichkeit:(
hab das unwesentliche mal rausgenommen.
in unit1 hab ich rot unterlegt rufe ich form2 auf

BUG 9. Mär 2011 10:56

AW: EAccessViolation beim initialisieren des formblattes
 
Ist es denn so schwer, die ein paar Delphi-Tags zu setzen :gruebel:

Code:
[DELPHI]
// hier dein Code
// bitte deinen obigen Beitrag editieren
[/DELPHI]
ergibt:
Delphi-Quellcode:
// hier dein Code
// bitte deinen obigen Beitrag editieren

Willi1960 9. Mär 2011 11:03

AW: EAccessViolation beim initialisieren des formblattes
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;


implementation



{$R *.DFM}

procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   form2.show;   Hier rufe ich form2 auf
end;


end.
---------------------------------------------------------------------

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    Edit6: TEdit;
    Label6: TLabel;
    Edit7: TEdit;
    Label7: TLabel;
    Edit8: TEdit;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit9: TEdit;
    Label8: TLabel;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Label9: TLabel;
    Button6: TButton;
    ComboBox1: TComboBox;
    Button5: TButton;
    Button7: TButton;
    StringGrid1: TStringGrid;
    Label10: TLabel;
    Edit13: TEdit;
    Label11: TLabel;
    Edit14: TEdit;
    Label12: TLabel;
    Edit15: TEdit;
    Button8: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure Edit9Change(Sender: TObject);
    procedure Edit10Change(Sender: TObject);
    procedure Edit11Change(Sender: TObject);
    procedure Edit12Change(Sender: TObject);
    procedure Edit13Change(Sender: TObject);
    procedure Edit14Change(Sender: TObject);
    procedure Edit15Change(Sender: TObject);
    procedure Edit8Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  { Beginn der abzuspeichernden Datei}
  namen        : array[1..9999] of string[40];
  Vorname      : array[1..9999] of string[40];
  Strasse      : array[1..9999] of string[40];
  plz          : array[1..9999] of string[8];
  ort          : array[1..9999] of string[40];
  kundenstatus1 : array[1..9999] of string[20];
  kundenstatus2 : array[1..9999] of string[20];
  Geburtstag   : array[1..9999] of string[10];
  Kundennummer : array[1..9999] of string[12];
  memo         : array[1..9999] of string;
  handy        : array[1..9999] of string[20];
  tel          : array[1..9999] of string[20];
  email        : array[1..9999] of string[30];
  belegt       : array[1..9999] of boolean;
  Sortkriterium : integer;
  nummer       : integer;
   { ende der abzuspeichernden datei}
  sortfeld     : array[1..10] of string;
  puffername   : string;
  x            : integer;                      {laufende Variablen}

const
  dateigefunden : boolean=false;



implementation
uses unit1;

{$R *.DFM}


procedure gitterdefinieren;
begin
  with form2.stringgrid1 do begin    Hier bekomme ich den fehler
      colwidths[0]:=130;
      colwidths[1]:=90;
      colwidths[2]:=130;
      colwidths[3]:=40;
      colwidths[4]:=130;
      colwidths[5]:=50;
      colwidths[6]:=50;
      colwidths[7]:=70;
      colwidths[8]:=90;
      colwidths[9]:=90;
      colwidths[10]:=140;
      cells[0,0]:='Name';
      cells[1,0]:='Vorname';
      cells[2,0]:='Strasse';
      cells[3,0]:='Plz';
      cells[4,0]:='Ort';
      cells[5,0]:='KdSta1';
      cells[6,0]:='KdSta2';
      cells[7,0]:='Geburtsdatum';
      cells[8,0]:='Handy';
      cells[9,0]:='Tel.Nr';
      cells[10,0]:='Email';
   end;
end;

procedure sortieren;
var
   i     : integer;
begin
   gitterdefinieren;
   WirklichSortieren;
   for i:=1 to nummer do begin
     with form2.stringgrid1 do begin
       cells[0,i]:=namen[i];
       cells[1,i]:=vorname[i];
       cells[2,i]:=strasse[i];
       cells[3,i]:=plz[i];
       cells[4,i]:=ort[i];
       cells[5,i]:=kundenstatus1[i];
       cells[6,i]:=kundenstatus2[i];
       cells[7,i]:=geburtstag[i];
       cells[8,i]:=handy[i];
       cells[9,i]:=tel[i];
       cells[10,i]:=email[i];
     end;
   end;  
end;



begin
   sortfeld[1]:='Name';
   sortfeld[2]:='Vorname';
   sortfeld[3]:='Strasse';
   sortfeld[4]:='Plz';
   sortfeld[5]:='Ort';
   sortfeld[6]:='Kundenstatus1';
   sortfeld[7]:='Kundenstatus2';
   sortfeld[8]:='Geburtstag';
   sortfeld[9]:='jüngste Kunden';
   sortfeld[10]:='älteste Kunden';
   for x:=1 to 9999 do belegt[x]:=false;
   pruefdateiladen;
   if dateigefunden=true then dateiladen;
   sortkriterium:=0;
   sortieren;
end.
sry hoffe nun ist das richtig, ist das erste mal das ich sowas poste:(

WM_CLOSE 9. Mär 2011 11:31

AW: EAccessViolation beim initialisieren des formblattes
 
Der Code ganz unten wird Aufgerufen, wenn die Unit erzeugt wird.
Form2 existiert an dem Punkt nicht. du must
Delphi-Quellcode:
sortieren
bzw
Delphi-Quellcode:
gitterdefinieren
an einem anderen Punkt aufrufen.

Ein Vorschlag: im OnCreate- ereignis des Form2
Mal ganz davon abgesehen: Du solltest dir noch einmal gründlich überlegen, wie du das Programm aufbauen willst.
So kommst du wahrscheinlich nicht weit.

himitsu 9. Mär 2011 11:36

AW: EAccessViolation beim initialisieren des formblattes
 
Solche Hinnweise kannst du als Kommentare (z.B. mit schön vielen * einbauhen) ... ansonsten bitte QuellTexte auch als Quelltext formatieren.
Du hast noch 1-2 tündchen Zweit, um deinen Beitrag nochmal zu ändern.

So schaut sich keiner gern einen Quelltext an und macht die Seite einfach wieder zu.

PS: Du kannst keine Exception an der markierten Stelle bekommen, da gitterdefinieren niemals aufgerufen wird ... jedenfalls nicht in den vorhandenen Quelltexten.
[edit]
oh, jetzt ist der Aufruf plötzlich da ... wäre auch zu schön, wenn die RedBox mal auf neue oder geänderte Posts reagieren würde :stupid:
Und WM_CLOSE hat inzwischen auch schon die Grund richtig genannt :D

BUG 9. Mär 2011 11:39

AW: EAccessViolation beim initialisieren des formblattes
 
Zitat:

Zitat von himitsu (Beitrag 1086983)
PS: Du kannst keine Exception an der markierten Stelle bekommen, da gitterdefinieren niemals aufgerufen wird ... jedenfalls nicht in den vorhandenen Quelltexten.

Doch, in sortieren.

EDIT: Editieren gibt keinen roten Kasten :stupid:

mkinzler 9. Mär 2011 11:48

AW: EAccessViolation beim initialisieren des formblattes
 
Wird Form2 eigentlich wo erzeugt ( z.B. automatisch über Projekt)?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 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