AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei AccessViolation

Ein Thema von Pfl · begonnen am 2. Dez 2014 · letzter Beitrag vom 3. Dez 2014
 
Pfl

Registriert seit: 5. Jun 2012
Ort: Berlin
65 Beiträge
 
Delphi XE6 Architect
 
#1

Hilfe bei AccessViolation

  Alt 2. Dez 2014, 20:42
Hallo, liebe Community,

ich bin heute beim Ausführen meines Programmes auf folgenden Fehler gestoßen :

'Zugriffsverletzung in 0x0084931b: lesen von Adresse 0x000003e0, Prozess easl_vcl.exe (7276).

Hier der Source :
Delphi-Quellcode:
procedure TForm_main.FormCreate(Sender: TObject);
var
  project: TProjectFile;
  domfile: file of TProjectFile;
begin
  // Verzeichnis fuer Temp. Dateien und Sicherungen
  cstore_temp := ExpandEnvStr('%Appdata%\EA\Monetalis\.$$$');
  // Verzeichnis fuer Lizenzen, Projektdateien
  cStore_TODO := ExpandEnvStr('%Appdata%\EA\Monetalis\.TODO');

  // Index fuer StringGrid
  i := 1;

  // DOM-Datei erzeugen
  project.ver := GetVersion; // Welche Programmversion ?
  project.licensecounter := 0; // Angefangen wird bei 0 Lizenzen
  project.datec := date; // Aktuelles Datum wird bei erneutem Laden ausgelesen
  project.datem := date - 60; // 60Tage Laufzeit bei Testversionen
  project.fileinfo := 'MONETALIS LicenseManager Project'; // Beschreibung
  project.erkennung := 'DOM'; // Char fuer die ersten Bytes
  project.index := i; // wird erhoeht, sobald Programm ein neues Projekt erzeugt
  project.serial := ''; // noch leer; wird aus Array gefuellt

  try
    AssignFile(domfile, cStore_TODO + '\' + datetostr(date) + '.dom');
    // in .TODO ablegen

    Rewrite(domfile); // erneut schreiben (in RAM)
    write(domfile, project); // abschliessen
  finally
    CloseFile(domfile); // Datei "schließen", also auf Platte schreiben

    // kopieren nach temp
    CopyFile(pchar(cStore_TODO + '\' + datetostr(date) + '.dom'),
      pchar(cstore_temp + '\' + datetostr(date) + '.dom'), False)
  end;

  // ---------------------------------------------------------------------------

  // PC-Name ermitteln
  form_main.Caption :=
    ' Monetalis FinanzV | Graphischer Lizenzmanager EA 2014 [ ' +
    GetComputername + ' ]';
  StatusBar1.Panels[1].Text := 'PC: ' + GetComputername;
  // ---------------------------------------------------------------------------

  // ***************************************************************************

  // StringGrid erhält seine Indices von 0 aufwärts
  while length(trim(StringGrid1.Cells[2, i])) > 0 do
  begin
    inc(i);
  end;
  reg := TRegistry.Create(KEY_READ); // nur lesen
  { Teilweises auslesen des Registry-Schlüssels,der die Aktivierungsdaten ethält }
  reg.RootKey := HKEY_LOCAL_MACHINE;
  // HKLM (nur Admins dürfen lesen und schreiben)
  reg.OpenKey('SOFTWARE\EA\MonetalisFV\LM\2014', true);

  // ---------------------Einstellungen lesen--------------------

  { TODO -o EA Berlin -c Einstellungen : Einstellungen werden noch nicht wirksam! }

  ini := TIniFile.Create(cStore_TODO + 'user_defined.sol'); // erzeugen in RAM
  try
    if ini.readString('StringGrid1', 'ColorHighlighting', '') = 'Ythen
      Formsettings.colorset.Checked := true
      // wenn Y in der Ini-Datei als Wert steht, dann Haken setzen
    else
      Formsettings.colorset.Checked := False;
    // andernfalls (also ein N in der Datei), dann kein Haken

    if ini.readString('VisualEffect', 'Design', '')
      = Formsettings.designauswahl.Items.Text then
      Formsettings.CheckBox1.Checked := true
      // Prinzip s. vorherige Abfrage; anstelle dessen hier :
      // die Oberflaeche des Programmes betreffend
    else
      Formsettings.CheckBox1.Checked := False;
  finally
    ini.free; // Objekt freigeben, sonst EInvalidPointer except.
  end;


  // ---------------------Testversion----------------------------

  StringGrid1.Cells[1, i] := reg.readString('Product'); // Produkt
  // Seriennummer der Testversion
  StringGrid1.Cells[2, i] := reg.readString('TL');
  StringGrid1.Cells[3, i] := reg.readString('LNr');
  StringGrid1.Cells[4, i] := datetostr(reg.ReadDate('ExpDate'));
  // ggf. DateTimeToStr()
  // Ablaufdatum
  StringGrid1.Cells[5, i] := reg.readString('PCName');
  // PC-Name

  // ***************************************************************************

  // ---------------------Vollversion----------------------------
  StringGrid1.Cells[1, i] := reg.readString('Product');
  StringGrid1.Cells[2, i] := reg.readString('FV'); // FullVersion
  // Bei Vollversionen nur der Dateiname !!!

  (*
    Einstellungen einlesen und korrekt deklarieren; Nutzer kann eine bereits aktivierte
    Textversion nicht doppelt aktivieren!
  *)


  // stringgrid erhält seine spaltennamen
  with StringGrid1 do
  begin
    Cells[0, 0] := 'Index';
    Cells[0, 1] := inttostr(0 + i); // weiterführen
    Cells[1, 0] := 'Produkt';
    Cells[2, 0] := 'Seriennummer\GUID';
    Cells[3, 0] := 'Lizenz-Nr.';
    Cells[4, 0] := 'Ablaufdatum';
    Cells[5, 0] := 'PC-Name'; // früher defaut-lizenz jetzt pc-name
  end;

  // Zeile dem "LOG" hinzufuegen
  log.Lines.Add('Getting common information.......SUCCESS');

  // Erstes Panel in der StatusBar versorgen
  StatusBar1.Panels[0].Text := 'Arbeitsplatz: 1';

  // Zweites Panel versorgen
  StatusBar1.Panels[2].Text := 'Datum : ' + datetostr(date);

  // Loakle IP auslesen (!)
  GetLocalIPs(Memo1.Lines);

  // Falls keine IP vorhanden, dann N.N. eintragen, ...
  if not GetLocalIPs(Memo1.Lines) then
    StatusBar1.Panels[3].Text := 'IPv4-Adresse: N. N.'
  else
    // andernfalls IP aus Memo an StatusBar-Panel 4 senden (von 0 aus)
    StatusBar1.Panels[3].Text := 'IPv4-Adresse: ' + Memo1.Lines.Text;
end;
Der Debugger verwies auf diese Methode. Gibt es irgendeinen Hinweis, was wohl die Ursache war?

Vielen Dank für eure Mühe.
Angehängte Grafiken
Dateityp: jpg Screenshot 2014-12-02 21.39.53.jpg (65,1 KB, 26x aufgerufen)
Friedrich
  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 07:11 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