Entwickler-Ecke

Dateizugriff - Runtime Error 216


gasser - Do 24.07.03 09:39
Titel: Runtime Error 216
Bei mir hat sich irgendwann eine Runtime Error eingeschlichen (216 at 0040355E)
Der Fehler tritt beim schliessen des Programmes auf.

kann mir jemand sagen wie ich die Fehlerquelle lokalisieren kann?

Gruss
Hanspeter


Tino - Do 24.07.03 10:11
Titel: Re: Runtime Error 216
Hallo!

gasser hat folgendes geschrieben:
Der Fehler tritt beim schliessen des Programmes auf.

Was macht denn dein Programm beim schließen? Benutzt du die OnDestroy-, OnClose-, etc Events? Wenn ja, was steht da drin?

Gruß
Tino


gasser - Do 24.07.03 10:34

Hallo Tino

Ich habe kenerlei Events in onClose oder on Destroy des Programmes

Gruss
Hanspeter


Tino - Do 24.07.03 11:35

Benutzt du irgenwelche sonstigen Komponenten (also nicht die Standard Komponenten die bei Delphi dabei sind)?

Gruß
Tino


gasser - Do 24.07.03 11:57

Tino

Ich verwende ADS als Datenbank. Die haben natürlich Ihre eigenen Komponenten. sonst ist nur Standart im Einsatz. Am ANfang hatte ich aber keine Probleme. Sie entstanden erst nach der Entwicklung des zweiten Reports in DELPHI (Sie sind halt immer noch die Schnellsten und zudem am universellsten einsetzbar)

Es werden dann aber später CrystalReport und FastReport Komponenten zum Einsatz kommen.

Gruss
Hanspeter


Klabautermann - Do 24.07.03 12:10

Hallo,
gasser hat folgendes geschrieben:
Ich verwende ADS als Datenbank.

hast du in OnClose oder auch on Scroll ereignissen der DB-Objekte zugriffe auf andere Komponenten, die vieleicht noch in anderen Forms/DataModulen liegen?

Das könnte zu einem solchen Fehler führen.

Gruß
Klabautermann


gasser - Do 24.07.03 13:17

Hallo Klabautermann

Ich habe drei Datenmodelle (Hauptdatenmodell und zwei für die Reportaufbereitung).

Es gibt im Hauptmodel zwei Tabellen, die ein AfterScroll Event haben. Dort gibt es Zugriffe auf Buttons, RadioGroups, DBEdit-Komponenten und TabSheets, die logischerweise nicht im Datenmodell selbst liegen sondern alle im Hauptformular. Codesegment nachstehend.

Dieser Teil wurde aber sehr Früh ausprogrammiert. Und damals gab es noch keine solche Fehlermeldungen. Die sind irgendwann entstanden und ich habe leider nicht augenblicklich beim ersten Auftreten reagiert.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
procedure TDM_PERS.T_HYSTAfterScroll(DataSet: TDataSet);
// Steuerung der STK Farbe und der Berechtigung der Hauptpanels ******* 21.05.03
begin
  If (HF_VFAMI.RG_PRAES.ItemIndex = 0OR (HF_VFAMI.RG_PRAES.ItemIndex = 1)Then
    Begin
      // PageControl2 wechseln (analog wie GB_DETAIL_PERSONAL) +++++++++++++++++
      If T_HYST.FieldByName('FEST_ANGESTELLT').AsBoolean = True Then
        Begin
          HF_VFAMI.TabSheet5.Visible := False;
          HF_VFAMI.TabSheet6.Visible := False;
          HF_VFAMI.TabSheet7.Visible := False;
          HF_VFAMI.TabSheet8.Visible := False;
          HF_VFAMI.TabSheet9.Visible := False;
        End
      Else
        Begin
          HF_VFAMI.TabSheet5.Visible := True;
          HF_VFAMI.TabSheet6.Visible := True;
          HF_VFAMI.TabSheet7.Visible := True;
          HF_VFAMI.TabSheet8.Visible := True;
          HF_VFAMI.TabSheet9.Visible := True;
        End;
      // Stempelkartennummer Farbe wechseln ++++++++++++++++++++++++++++++++++++
      If T_PERS.FieldByName('Geschlecht').AsString = 'M' Then
        Begin
          HF_VFAMI.DBEdit10.Font.Color := clNavy;
        End
      Else
        Begin
          HF_VFAMI.DBEdit10.Font.Color := clRed;
        End;
      // Button Bild holen +++++++++++++++++++++++++++++++++++++++++++++++++++++
      If T_HYST.FieldByName('BILD_FILENAME').AsString = '' Then
        Begin
          HF_VFAMI.SB_BILD_HOLEN.Visible := True;
        End
      Else
        Begin
          HF_VFAMI.SB_BILD_HOLEN.Visible := False;
        End;
      // Anzeige des JPEG-Filenamens unter dem Bild ++++++++++++++++++++++++++++
      HF_VFAMI.Edit9.Text := T_HYST.FieldByName('BILD_FILENAME').AsString;
  End;
  With HF_VFAMI Do
    Try
      If PageControl2.ActivePage = TabSheet4 Then
        Begin
          If DBEdit19.Text = '' Then
            Begin
              DBEdit23.Visible := False;
              DBEdit20.Visible := False;
              Label20.Visible  := False;
            End
          Else
            Begin
              DBEdit23.Visible := True;
              DBEdit20.Visible := True;
              Label20.Visible  := True;
            End;
        End;
    Except
    End;
  // Bild in Anzeige Laden +++++++++++++++++++++++++++++++++++++++++++++++++++++
  HF_VFAMI.LoadJPGFromBinary((T_HYST.FieldbyName('BILD')as TBlobfield));
end;


Gruss Hanspeter

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Motzi - Do 24.07.03 14:09

Arbeitest du irgendwo mit Pointern?


Klabautermann - Do 24.07.03 14:13

Hallo gasser,

änderungen im verhalten, dann es geben, wenn die Erstellungsreihenfolge geändert wird. Du kannst ja man Probehlber den Code auskommentieren und gucken ob der Fehler noch auftritt.

Gruß
Klabautermann


gasser - Do 24.07.03 14:53

Hallo


:( Das Auskommentieren hat nichts gebracht. Ich versuche mal einen Printscreen rüber zu bringen mit der ersten Fehlermeldung. Runtime Error 216 kommt nach dieser.

Im Projekt VFAMI.EXE ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung 'Zugriffsverletzung bei Adresse 004042F4 in Modul 'VFAMI.EXE. Lesen von Adresse 0176D490'. Prozess wurde angehalten. Mit einzelschritt oder Start fortsetzen.

Ich habe nicht viel Ahnung mit dem Debugger, darum komme ich wahrscheinlich auch nicht weiter.

:o
Gruss
Hanspeter