![]() |
Delphi-Version: 6
undefinierter Bezeichner (self)
Hallo zusammen,
beim compilieren kommt immer die Fehlermeldimg "undefinierter" Bezeihncer self. fstammdaten.BSpeichernClick(self); Das Formular TFStammdaten ist aber mit eingebunden. Danke für die Hilfe. |
AW: undefinierter Bezeichner (self)
Zeig mal die Zeilen darüber einschließlich Funktions- bzw. Prozedurkopf.
|
AW: undefinierter Bezeichner (self)
Hier die komplette unit.
Ustammdatenerfassung - aus deiser Unit kommt der Aufruf Fstammdatenspeichern.clik(self)
Delphi-Quellcode:
unit udatenabgleich;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, comobj, Excel2000, OleServer, ExtCtrls, ComCtrls, FileCtrl, inifiles, Mask, Menus, ExtDlgs, Dialogs, StdCtrls, Buttons, ustammdatenerfassung, uinit,utypen,uconst; type Tfdatenabgleich = class(TForm) OpenDialog1: TOpenDialog; lefamilienname: TLabeledEdit; levorname: TLabeledEdit; LEPersonennummer: TLabeledEdit; BitBtn1: TBitBtn; Excel: TExcelApplication; ExcelWorkbook: TExcelWorkbook; Sheet: TExcelWorksheet; pbVerein: TProgressBar; pbstammdatei: TProgressBar; Label1: TLabel; Label2: TLabel; private { Private-Deklarationen } public { Public-Deklarationen } end; const udatenabgleich_const = '8.004/231120'; var fdatenabgleich: Tfdatenabgleich; Excel,sheet : variant; excelzeile,excelspalte, Mitgliedsnummer : integer; excel_dummy : zeile; leer_person : tname; leer_adresse : tadresse; procedure Datenabgleich; implementation {$R *.dfm} procedure Datenabgleich; Begin fdatenabgleich.Visible := true; fdatenabgleich.Text := 'Datenabgleich - ' + udatenabgleich_const; fdatenabgleich.Update; fdatenabgleich.OpenDialog1.Execute; assignfile(stammdatei,stammverzeichnisname + '\' + datenverzeichnisname + '\' + stammdateiname); reset(stammdatei); excel := createoleobject('Excel.Application'); excel.Workbooks.Open(trim(fdatenabgleich.OpenDialog1.FileName)); sheet := excel.workbooks[1].worksheets[1]; excelzeile := 1; fdatenabgleich.pbVerein.Max := 0; repeat dummy_zeile := excel.cells[excelzeile,1].value; inc(excelzeile); fdatenabgleich.pbverein.min := 0; fdatenabgleich.pbVerein.Max := fdatenabgleich.pbVerein.Max +1; until length(trim(dummy_zeile)) = 0; fdatenabgleich.pbstammdatei.Max := filesize(stammdatei); fdatenabgleich.pbstammdatei.Min := 0; fdatenabgleich.pbstammdatei.Step := 1; fdatenabgleich.pbverein.min := 0; fdatenabgleich.pbVerein.Step := 1; assign(adressdatei,stammverzeichnisname + '\' + datenverzeichnisname + '\' + adressdateiname); reset(Adressdatei); excelzeile := 1; excelspalte := 1; repeat inc(excelzeile); fdatenabgleich.pbVerein.StepIt; excel_dummy := excel.cells[excelzeile,1].value; reset(stammdatei); gefunden := false; fdatenabgleich.pbstammdatei.Min := 0; repeat fdatenabgleich.pbstammdatei.StepIt; namens_init(person); read(stammdatei,person); fdatenabgleich.Update; val(person.flag_string[personennummer_HV_const],mitgliedsnummer,valok); if length(excel_dummy) > 0 then if (trim(person.flag_String[personennummer_HV_const]) = trim(excel_dummy)) then gefunden := true; until (gefunden) or (eof(stammdatei)); if gefunden then Begin with person do Begin n_name := trim(excel.cells[excelzeile,2].value); v_name := trim(excel.cells[excelzeile,3].value); fdatenabgleich.lefamilienname.Text := n_name; fdatenabgleich.levorname.Text := v_name; fdatenabgleich.LEPersonennummer.Text := excel_dummy; fdatenabgleich.Update; dummy_zeile := excel.cells[excelzeile,13].value; person.geburtsdatum := strtodate(trim(dummy_zeile)); // Eintritt person.flag_string[6] := excel.cells[excelzeile,14].value; // Kündigung am person.flag_string[4] := excel.cells[excelzeile,15].value; // Kündigung zum person.flag_string[5] := excel.cells[excelzeile,16].value; seek(stammdatei,person.Nummer - 1); write(stammdatei,person); reset(adressdatei); adressen_init(adresse); seek(adressdatei,person.Nummer - 1); read(adressdatei,adresse); dummy_zeile := excel.cells[excelzeile,4].value; adresse.adresse[plz_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,5].value; adresse.adresse[ort_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,6].value; adresse.adresse[strasse_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,11].value; if length(dummy_zeile) <> 0 then adresse.adresse[email_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,7].value; if length(dummy_zeile) <> 0 then adresse.adresse[telprivat_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,8].value; if length(dummy_zeile) <> 0 then adresse.adresse[telgesch_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,9].value; if length(dummy_zeile) <> 0 then adresse.adresse[mobil_const] := trim(dummy_zeile); if length(trim(person.Verein)) <= 3 then Begin person.Verein := 'VFL Nürnberg'; person.flag_boolean[sg_const] := false; person.flag_boolean[stammdatensatzaenderung_const] := true; person.mannschaft := 'Liste Hauptverein'; end; leer_person := person; leer_adresse := adresse; stammdatenerfassung(true); person := leer_person; adresse := leer_adresse; abgleich(person,adresse); end; seek(adressdatei,adresse.Schwimmer_nummer - 1); write(adressdatei,adresse); if fstammdaten.Visible then fstammdaten.Visible := false; end else // Datensatz wird in SwimBase neu angelegt Begin namens_init(person); adressen_init(adresse); with person do Begin n_name := trim(excel.cells[excelzeile,2].value); v_name := trim(excel.cells[excelzeile,3].value); fdatenabgleich.lefamilienname.Text := n_name; fdatenabgleich.levorname.Text := v_name; fdatenabgleich.LEPersonennummer.Text := excel_dummy; fdatenabgleich.Update; dummy_zeile := excel.cells[excelzeile,13].value; person.geburtsdatum := strtodate(trim(dummy_zeile)); // Eintritt person.flag_string[6] := excel.cells[excelzeile,14].value; // Kündigung am person.flag_string[4] := excel.cells[excelzeile,15].value; // Kündigung zum person.flag_string[5] := excel.cells[excelzeile,16].value; adressen_init(adresse); dummy_zeile := excel.cells[excelzeile,4].value; adresse.adresse[plz_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,5].value; adresse.adresse[ort_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,6].value; adresse.adresse[strasse_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,11].value; if length(dummy_zeile) <> 0 then adresse.adresse[email_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,7].value; if length(dummy_zeile) <> 0 then adresse.adresse[telprivat_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,8].value; if length(dummy_zeile) <> 0 then adresse.adresse[telgesch_const] := trim(dummy_zeile); dummy_zeile := excel.cells[excelzeile,9].value; if length(dummy_zeile) <> 0 then adresse.adresse[mobil_const] := trim(dummy_zeile); if length(trim(person.Verein)) <= 3 then Begin person.Verein := 'VFL Nürnberg'; person.flag_boolean[sg_const] := false; person.flag_boolean[stammdatensatzaenderung_const] := true; person.mannschaft := 'Liste Hauptverein'; end; leer_person := person; leer_adresse := adresse; stammdatenerfassung(true); person := leer_person; adresse := leer_adresse; abgleich(person,adresse); fstammdaten.BSpeichernClick(self); end; if fstammdaten.Visible then fstammdaten.Visible := false; end; until (length(excel_dummy) = 0); closefile(adressdatei); closefile(stammdatei); Excel.Quit; //Beendet Excel Excel := Unassigned; fdatenabgleich.Close; End; end. |
AW: undefinierter Bezeichner (self)
Ich rate mal und behaupte, der gezeigte Code befindet sich innerhalb einer regulären Prozedur/Funktion und nicht innerhalb einer Methode.
|
AW: undefinierter Bezeichner (self)
Die "procedure Datenabgleich;" hängt alleine im Raum. Und kennt daher self nicht.
Häng' die als Methode an Tfdatenabgleich und schon kennt die auch self. Oder nutze halt die Instanzvariable "fdatenabgleich" |
AW: undefinierter Bezeichner (self)
Und wenn schon, dann auch gleich diese globanen Variablen in die Klasse mitnehmen (private).
|
AW: undefinierter Bezeichner (self)
Dann noch
Delphi-Quellcode:
auflösen, also entfernen. Das ist ganz schlechter Programmierstil. :zwinker:
with person do
|
AW: undefinierter Bezeichner (self)
Zitat:
Delphi-Quellcode:
with self, Person do
GDR |
AW: undefinierter Bezeichner (self)
|
AW: undefinierter Bezeichner (self)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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