AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Exception der Adresse C0000005 und 00403057
Thema durchsuchen
Ansicht
Themen-Optionen

Exception der Adresse C0000005 und 00403057

Ein Thema von Johannes013 · begonnen am 10. Jun 2009 · letzter Beitrag vom 10. Jun 2009
Antwort Antwort
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#1

Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:02
Hallo,

ich habe ein fatales Problem. Sobald ich mein Programm starte, kommen drei Fehlermeldungen (siehe Anhang).

Ich habe meinen Code nach dem Prinzip von Dateien gemacht. Die Abfrage ist:

Delphi-Quellcode:
if Copy(PList[0],1,10)='0123456789then
   begin
// Anweisungen...
   end;
Es wird angemängelt, dass irgendetwas mit Application.Run sei und meiner Abfrage des Zahlencodes.
Könnt ihr mir helfen? Ich finde nirgends etwas dazu.


Johannes
Angehängte Grafiken
Dateityp: bmp fehlerdelphi_2_153.bmp (170,2 KB, 9x aufgerufen)
Dateityp: bmp fehlerdelphi_1_123.bmp (124,4 KB, 3x aufgerufen)
Dateityp: bmp fehlerdelphi_meldung_151.bmp (227,7 KB, 6x aufgerufen)
Dateityp: bmp fehlerdelphi_meldung_2_127.bmp (195,9 KB, 3x aufgerufen)
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#2

Re: Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:06
Erstmal: das Programm aus dem verlinktem Beitrag funktioniert so überhaupt nicht.


Hast du PList überhaupt erstellt und gibt es auch mindestens 5 Zeilen in deiner StringList?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#3

Re: Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:08
warte..hier ist mein code: es ist der anfang eines simulierten Systems:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, jpeg, ExtCtrls, MPlayer, StdCtrls, Mask;

type
  TPForm = class(TForm)
    PMain: TImage;
    Laden1: TAnimate;
    Laden2: TAnimate;
    PasswortInfo: TLabel;
    PW2: TMaskEdit;
    PW1: TMaskEdit;
    PWOK: TButton;
    User: TLabel;
    Starttext: TLabel;
    RCode1: TEdit;
    RCode2: TEdit;
    RCode3: TEdit;
    RCodeOk: TButton;
    Soundbar: TMediaPlayer;
    sys: TTimer;
    DatumTimer: TTimer;
    procedure sysTimer(Sender: TObject);
    procedure DatumTimerTimer(Sender: TObject);
    procedure UserClick(Sender: TObject);
    procedure PWOKClick(Sender: TObject);
    procedure RCodeOkClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PMainMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure UserMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  PForm: TPForm;
  Zeile,Spalte,Lange,Cursor:Integer;
  PList:TStringList;
  Datzeit:String;

implementation

{$R *.DFM}

procedure TPForm.sysTimer(Sender: TObject);
begin
   if Laden1.Visible=TRUE then
      begin
         Laden1.Hide;
         Laden2.Hide;
         PMain.Picture:=nil;
         PForm.Cursor:=crDefault;
         Starttext.Show;
         User.show;
      end;
end;

procedure TPForm.DatumTimerTimer(Sender: TObject);
begin
   Datzeit:=TimeToStr(Time)+' '+DateToStr(Date);
end;

procedure TPForm.UserClick(Sender: TObject);
begin
// Main Part: Login -----------------------------------------------------------
// PMain.Picture:=res.UserBG.Picture;
   PForm.Color:=clwhite;
   User.Hide;
// Überprüfung von Daten und Beschädigungen-----------------------------------
         if Copy(PList[0],1,10)='0123456789then
            begin
               PList.Append('Cofiguring...');
               PList.Append('Setting...');
               PList.Append(' ');
            end
         else
             begin
                  // Wenn Abfrage falsch dann...
                  halt;
             end;
   if Copy(PList[3],1,19)<>'[REGISTERED]=[TRUE]then
      begin
           Starttext.Caption:='Bitte geben Sie den Registriercode ein:';
           RCode1.Show;
           RCode2.Show;
           RCode3.Show;
           RCodeOk.show;
      end
   else
      begin
           Starttext.hide;
           RCode1.Hide;
           RCode2.Hide;
           RCode3.Hide;
           RCodeOk.Hide;
      end;
// Beenden von Überprüfung -------------------------------------------------

end;

procedure TPForm.PWOKClick(Sender: TObject);
begin
   if (PW1.Text=PW2.Text) and (not (PW1.Text='')) then
      begin
         PW1.Hide;
         PW2.Hide;
         PasswortInfo.Hide;
         PList.Delete(4);
         PList.Append(PW1.Text);
         PList.SaveToFile('Pegasus.txt');
         if FileExists('Pegasus.dll') then
            DeleteFile('Pegasus.dll');
         RenameFile('Pegasus.txt','Pegasus.dll');
         PList.Free;
      end;
end;

procedure TPForm.RCodeOkClick(Sender: TObject);
begin
   if (RCode1.Text='1201') and (RCode2.Text='1996') and (RCode3.Text='1705') then
      begin
// Registrierung vollzeihen -------------------------------------------------
         PList.Delete(3);
         PList.Append('[REGISTERED]=[TRUE]');
// Passwortauswahlfeld sichtbar machen --------------------------------------
         PW1.Show;
         PW2.show;
         PasswortInfo.Show;
         PWOK.Show;
// Registrierung ausschalten ------------------------------------------------
         Starttext.hide;
         RCode1.Hide;
         RCode2.Hide;
         RCode3.Hide;
         RCodeOk.Hide;
      end
   else
      begin
         with Soundbar do
            begin
               FileName:='Error.wav';
               Open;
               EndPos:=TrackLength[2] div 2;
               Play;
               PList.Append('ERROR: '+Datzeit);
            end;
      end;
end;

procedure TPForm.FormCreate(Sender: TObject);
const
   crTest1=1; // aus externer .CUR-Datei
begin
// Überprüfen von Dateivohandenkeit bzw erstellen ------------------------
   PList.Create;
   if FileExists('Pegasus.txt') then
         PList.LoadFromFile('Pegasus.txt');
   PList.Append('0123456789');
// Erstellprozedur beenden -----------------------------------------------
   Cursor:=0;
   Screen.Cursors[crTest1]:=LoadCursorFromFile(PChar('none.cur'));
   Cursor:=crTest1;
   Laden1.Cursor:=crTest1;
   Laden2.Cursor:=crTest1;
end;

procedure TPForm.PMainMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   User.Font.Color:=clsilver;
   User.Font.Style:=[fsBold,fsUnderline];
end;

procedure TPForm.UserMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   User.Font.Color:=clwhite;
   User.Font.Style:=[fsBold];
end;

end.
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:10
Mal wieder der alte Fehler.PList := TStringlist.Create; Möglicherweise sind noch mehr drin, aber ich habe nicht weiter geschaut.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#5

Re: Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:14
Zitat:
PList.Create;
eine Instanz einer Klasse erstellt man so:
PList := TStringList.Create; und vergiß nicht PList im OnDestroy der Form wieder freizugeben ( PList.Free; ), wenn du sie schon im OnCreate erstellst.

PS: dann macht es sich besser die Variablen in den Private-Abschnitt der Form zu legen und nicht als globale Variablen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#6

Re: Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:17
Danke....wasstegarnicht, dass von der einen Zeile alles abhängt.

Hat funktioniert. Aber warum muss man die Variablen in Privatabschnitten deklarieren und nicht global?
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#7

Re: Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:21
Muß man nicht, aber es ist besser.

Der Grundsatz lautet einfach nur:
Definiere alles so nah wie möglich an der Stelle/Ebene, wo es benötigt wird.

Und da hier vieles innerhalb verschiedener Funktionen der Klasse benötigt wird, macht es sich hier gut, wenn es auch innerhalb der Klasse definiert ist.


So passiert es seltener, daß mal Variablen mit dem gleichen Namen sich überschneiden und man ausversehn auf was falsches zugreift, weil z.B. rein zufällig etwas Gleichnamiges später definiert wurde.


PS: was deinen Schutz angeht ...
if (RCode1.Text='1201') and (RCode2.Text='1996') and (RCode3.Text='1705') then da ändert man 3 Byte in deiner EXE und macht aus = ein <> oder man schaut einfach in die EXE rein, denn die Strings (mit deinen Zahlen) stehen als Klartext darin und man kann die leicht abschreiben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Exception der Adresse C0000005 und 00403057

  Alt 10. Jun 2009, 16:25
Zitat von Johannes013:
Danke....wasstegarnicht, dass von der einen Zeile alles abhängt.
Beim Programmieren gilt
99,9% Richtig = 100% Falsch
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:02 Uhr.
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