Hi Unwissende, marabu und Muehle..
Ich denke das sollte sich auf alle beziehen:
Zitat von
Der_Unwissende:
Zitat von
xZise:
Wenn es nicht am Code liegt, werde ich mich wohl an den Programmierer des Parsers wenden müssen
HI,
von welchem Typ ist denn dieser Parser. Schon klar, dass es sich um TExCqParser handelt, aber ist das eine Klasse oder ein Record? (gehe mal stark von ersterem aus). Wenn es eine Klasse ist, so wirst Du schon mal keinen Zeiger brauchen, da in der Variable Parser eh nur eine Referenz (ein impliziter Zeiger) übergeben wird.
Ich war mir nicht sicher
Und ein Zeiger auf einen Zeiger sollte doch funzen ^^ (und in setVars funzt es ja auch) Ich werds ändern
Zitat von
Der_Unwissende:
Dein Fehler kann gleich durch verschiedene Dinge entstehen, aber am wahrscheinlichsten liegt es am falschen Index. Du greifst auf die Eigenschaft parser.Variables.Items zu, die dürften sich zwischen 0 und parser.Variables.Length - 1 liegen. Das prüfst Du aber nie. Für den Fall, dass noch kein Eintrag ausgewählt ist, dürfte der Index hier -1 sein und es könnte zu dem Fehler kommen. Dann prüfst Du auch nicht, ob ein Parser zugewiesen wurde (assigned(parser^)).
1. Der Typ der Liste ist, dass man dort nichts eintippen kann... d.h. es sind nur die Einträge möglich die in "setVars" gesetzt wurden. Und dazwischen habe ich eigentlich keine Funktion aufgerufen.
2. Ich werde mir dass absichern (<length> etc.)
Zitat von
Der_Unwissende:
Ich gehe einfach mal davon aus, dass es sich bei dieser Prozedur um die Ereignisbehandlung eine Komponente handelt? Und genau hier dürfte eben dieses Ereignis schon beim Anzeigen aufgerufen werden (und der ItemIndex muss zu dem Zeitpunkt nicht gültig, der Parser nicht gesetzt sein). Also einfach vorher prüfen und nur wenn Du hier die Korrektheit sicherstellst den Inhalt ausführen.
Also es ist der Code der Listbox (cbList), aber ich habe oben ja geschrieben, dass ich es absichern werde ^^
PS: Kanns ggf. daran liegen, dass diese Form, nicht die aufrufende Form kennt?
MfG
xZise
[edit]sry Hawkeye ^^ Ganz übersehen
Zitat von
Hawkeye219:
Hallo Fabian,
der Fehler scheint ja heute sehr beliebt zu sein:
klick
Bei dir steckt er in der Methode
setVariables.
Gruß Hawkeye
Also wie löst man das, dann?
Zitat von
Hawkeye219:
Hallo,
der Fehler dürfte hier stecken:
Delphi-Quellcode:
procedure TObjList.Add(AItem: TObject);
begin
if FLength = FCapacity then
Grow;
FItems^[FLength] := PObject(@AItem);
Inc(FLength);
end;
Du speicherst die Adresse einer
lokalen Variablen (nämlich des Parameters) in der Liste. Diese Adresse ist nach dem Verlassen der Routine ungültig.
Gruß Hawkeye
[/edit]
[edit]Boar bin ich doof ^^ Ich muss doch nur die Instanzvariable speichern
[/edit]