AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Funktionsaufruf innerhalb With..do => access violation
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionsaufruf innerhalb With..do => access violation

Ein Thema von Hobbycoder · begonnen am 6. Mär 2017 · letzter Beitrag vom 6. Mär 2017
 
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#1

Funktionsaufruf innerhalb With..do => access violation

  Alt 6. Mär 2017, 10:52
Hi,

ich hänge mal wieder an eine möglicherweise recht simplen Problem.
Ich erzeuge in meinem Programm einige Forms dynamisch. Zwecks Formatüberprüfung für z.B. eine Faxnummer nutze ich eine Function, die in einer separaten Unit liegt, in 2 dynamisch erzeugen Formularen jeweils im OnExit-Event eine JvValidateEdit um eine Faxnummer automatisch richtig zu formatieren. So weit kein Problem, läuft fehlerfrei.
Bei den beiden Formularen handelt es sich um eine Adressliste und eine Formular zur Adressenerfassung.

Wird jetzt beim Editieren einer Adresse das Formular zur Adressenerfassung erzeugt, möchte ich (im Falle eines des Editieren bereits vorhandener Daten) auch gleich eine Validierung der Faxnummer vornehmen. Der Aufruf ist identisch mit dem im OnExit-Event der Erfassungsform.
Jedoch kommt beim Aufruf der Function bereits eine AccessViolation. Ich habe Probleme mir das zu erklären. Objekte sind alle erzeugt, Uses ist auch passig, Compiler hat nix zu meckern und ich kann über den Debugger auch darauf zugreifen. Aber per Einzelschritt komme ich nicht einmal in die Funktion.

Hier mal der Code:
Delphi-Quellcode:
procedure Tfrm_Adressbuch.btn_aendernClick(Sender: TObject);
var
  LKZ, ONKZ, RN: string;
  idxLKZ, idxONKZ: Integer;
  faxnummer: string;
begin
  if lv_adressen.Selected=nil then Exit;
  with Tfrm_Adresse.Create(self) do
  begin
    try
      edt_name.Text:=Adressbuch[lv_adressen.Selected.Index].Name;
      edt_vorname.Text:=Adressbuch[lv_adressen.Selected.Index].Vorname;
      edt_firma.Text:=Adressbuch[lv_adressen.Selected.Index].Firma;
      faxnummer:=Adressbuch[lv_adressen.Selected.Index].Faxnummer;
      faxnummer:=ValidateNumber(faxnummer, CountryList, ONKZList, Settings.OwnCountryPrefix, Settings.OwnCityPrefix, LKZ, ONKZ, RN, idxLKZ, idxONKZ); // <-- Hier kommt die Access Violation
      edt_faxnummer.Text:=faxnummer;
      if idxLKZ>-1 then lbl_LKZ.Caption:=CountryList[idxLKZ].CountryDE;
      if idxONKZ>-1 then lbl_ONKZ.Caption:=ONKZList[idxONKZ].Ort;
      CountryList:=Self.CountryList;
      ONKZList:=Self.ONKZList;
      Settings:=Self.Settings;
      if ShowModal=mrOK then
      begin
        Adressbuch[lv_adressen.Selected.Index].Name:=edt_name.Text;
        Adressbuch[lv_adressen.Selected.Index].Vorname:=edt_vorname.Text;
        Adressbuch[lv_adressen.Selected.Index].Firma:=edt_firma.Text;
        Adressbuch[lv_adressen.Selected.Index].Faxnummer:=edt_faxnummer.Text;
        Adressbuch.SortByName;
        Adressbuch.SaveToFile(AdressenFilename);
        BuildLV;
      end;
    finally
      Free;
    end;
  end;
end;
Und die Function sieht folgendermaßen aus:
Delphi-Quellcode:
function ValidateNumber(Number: string; CountryList: TCountryList; ONKZList: TONKZList;
  OwnCountryPrefix: string; OwnCityPrefix: string;
  var LKZ, ONKZ, RN: string; var idxLKZ, idxONKZ: integer): string;
Wie gesagt in den OnExit-Events innerhalb des Tfrm_Adresse-Formular kann ich die Funktion problemlos aufrufen.

Hat irgendeiner eine Idee woran das liegen kann? Ist sicher mein Fehler, aber ich verstehe nicht warum.
Gruß Hobbycoder
  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 22:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz