![]() |
Delphi-Version: XE8
FDConnection.GetCatalognames wirft AV
Liste der Anhänge anzeigen (Anzahl: 3)
Hi zusammen
Ich habe meinem Datenmodul eine eigene Klasse zur 'direkten Kommunikation mit dem Server' spendiert. Im wesentlichen sollen damit Sessionvariablen abgerufen/verändert werden können.
Delphi-Quellcode:
So die Deklaration. Einige der Felder und Propertys, die für diesen Thred nicht wichtig sind, habe ich durch Pünktchen ersetzt.
TMySQLCorrespondent = class(TPersistent)
private{private Declarations} FContentmasterConnection : Boolean; FCatalogInformation: TStringlist; FMaxAllowedPacket: Integer; FCatNames: TStringList; ... function DefineContentmasterConnection: Boolean; function GetPerformanceSchemaConnection: Boolean; function GetSessionVarlist: TStringList; function GetCatalogInformation: TStringlist; //<== public{public Declarations} property ContentmasterConnection2: Boolean read DefineContentmasterConnection; property PerformanceSchemaConnection: Boolean read GetPerformanceSchemaConnection; property Cataloginformation : TStringlist read GetCatalogInformation; ... Constructor Create(AOwner: TObject); Destructor Destroy; override; end; Das Thema ist das Feld FCatNames. Und so wird das verwendet:
Delphi-Quellcode:
Die AV wird ausgelöst, weil FCatnames unbekannnt ist, also nicht mal nil.
constructor TMySQLCorrespondent.Create(AOwner: TObject);
begin inherited Create; FCatalogInformation := TStringlist.Create; FCatNames := TStringList.Create; end; destructor TMySQLCorrespondent.Destroy; begin FCatalogInformation.Free; FCatNames.Free; inherited; end; function TMySQLCorrespondent.GetCatalogInformation: TStringlist; var i, j: Integer; Catalog: string; begin FDMySQLDml.FDConnectionMySql.GetCatalogNames('', FCatNames); // AV Result := FCatNames; end; Was könnte da falsch sein? Im Anhang noch 3 Jpegs meines Strukturfensters. Aktiv sind dabei: Struktur1: TCM_First (das Hauptfenster) Struktur2: TServerInfoFrame Struktur3: FDMySQLDml (Datenmodul Gruss Delbor Gruss Delbor |
AW: FDConnection.GetCatalognames wirft AV
Zitat:
Ist FDMySQLDml zu dem Zeitpunkt eigentlich schon initialisiert? |
AW: FDConnection.GetCatalognames wirft AV
Hi Uwe Raabe
Ja. FDMySQLDml ist das Datenmodul. Und TMySQLCorrespondent ist da deklariert (vor FDMySQLDml) und ein privates Feld des Datenmoduls. Gruss Delbor |
AW: FDConnection.GetCatalognames wirft AV
Du übergibst ja als Rückgabewert in GetCatalogInformation die aktuelle FCatNames-Instanz. Der Rückgabewert wird aber nicht irgendwo freigegeben, oder?
|
AW: FDConnection.GetCatalognames wirft AV
Hi Uwe Raabe
Zitat:
Gruss Delbor PS: Der Aufruf:
Delphi-Quellcode:
procedure TServerInfoFrame.CatalogInformation;
var i, j: Integer; Catalog, SQLString: string; LIndent : String; CatNames: TStringlist; begin Self.LBxCatalogNames.Items.Insert(0,'procedure TServerInfoFrame.CatalogInformation;'); Self.LBxCatalogNames.Items.Insert(1,'**********************************************'); Catnames := TStringlist.Create; try // FDMySQLDml.FDConnectionMySql.GetCatalogNames('', CatNames); Self.LBxCatalogNames.Items.Add('Datenbank: ' + FDMySQLDml.FDConnectionMySql.Params.Database); Self.LBxCatalogNames.Items.AddStrings(FDMySQLDml.MySQLCorrespondent.Cataloginformation); //<< AV |
AW: FDConnection.GetCatalognames wirft AV
Hi zusammen
Interessanterweise sind heute morgen die Fehlermeldungen in der Strukturansicht weg. Bin gespannt darauf, was es braucht, bis sie wieder da sind. Erwartet hätte ich, dass die Fehlermeldungen nach dem ersten Durchsteppen wieder da wären... Am Fehler selbst hat sich nichts geändert. Entgegen meinem ersten Beitrag muss ich mich allerdings etwas korrigieren: Ich habe die Liste mal unter 'Überwachte Ausdrücke' eingetragen. Wenn nun beim durchsteppen die Unit des Datenmoduls aktiv wird, steht unter dem Eintrag der Liste "nicht verfügbarer Wert". Ist die Ausführungsposition bei Durchsteppen auf der entsprechenden Zeile und wenn ich die Maus über den Listenbezeichner halte, erhalte ich genau diese Meldung. Gruss Delbor |
AW: FDConnection.GetCatalognames wirft AV
Moin...:P
Zitat:
|
AW: FDConnection.GetCatalognames wirft AV
Hi haentschman
Tatsächlich habe ich mich auch schon darüber geärgert. Wenn ich mich richtig erinnere, war das damals unter DXE4... Das war auch schon nützlich. Wenn ich mich richtig erinnere, war dies unter DelphiXE - da wusste man: der Fehler steckt über der ersten unterstrichenen Quelltextzeile in genau der aktuellen Unit. Gruss Delbor |
AW: FDConnection.GetCatalognames wirft AV
Zitat:
Zitat:
|
AW: FDConnection.GetCatalognames wirft AV
Hi haentschman
Upps...Ja! Aber als ich dasDing anlegte, war ich mir über die Namensgebung nicht ganz klar; der Bezeichner ist doch etwas lang. Wobei mir vor allem für den Teil"...korrespondet" nichts kürzeres und Aussagekräftiges einfiel. Ein Ausschnitt aus der Felddeklaration des Datenmoduls:
Delphi-Quellcode:
...und aus der Property-Abteilung :P äh.. dem public-Abschnitt:FCategoryList: TDataObjectList<TQueryResultClass>; // Enthält die Bilder einer bestimmten Kategorie FCategoryBildList: TDataObjectList<TQueryResultClass>; FMySQLCorrespondent : TMySQLCorrespondent; FWICImage: TWICImage; FContentmastertables: TStringlist; FPerformanceSchemaTables: TStringList; FSessionVarList : TStringlist; FServerKorrespontent: TMySQLCorrespondent; ...
Delphi-Quellcode:
und zu guter(?)letzt aus dem Constructor des Datenmoduls:property Contentmastertables: TStringlist read GetContentmasterTables; property PerformanceSchemaTables : TStringList read GetPerformanceSchemaTables; property SessionVarList: TStringList read GetSessionVarlist; property MySQLCorrespondent : TMySQLCorrespondent read FMySQLCorrespondent write FMySQLCorrespondent;
Delphi-Quellcode:
OHH my god!!!procedure TFDMySQLDml.DataModuleCreate(Sender: TObject); var LIndent : String; begin LIndent := ' - '; FQueryResultList := TObjectList.Create; TPicture.RegisterFileFormat('NEF','NEF Format',TWICImage); FReportlist := TStringlist.Create; FSessionVarList := TStringlist.Create; // List := TObjectList<TNewObject>.Create(); TDataObjectList<TQueryResultClass>. FCategoryBildList := TDataObjectList<TQueryResultClass>.Create(); FCategoryList := TDataObjectList<TQueryResultClass>.Create(); FPathList := TStringList.Create; FServerKorrespontent := TMySQLCorrespondent.Create(Self); ... Gruss Delbor PS: Latürnich hab ich das gleich korrigiert und nicht FServerKorrespontent sondern FMySQLCorrespondent erstellt. Und da geschieht genau das, was Sir Rufo immer sagt: Kaum macht mans richtig... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 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 by Thomas Breitkreuz