Einzelnen Beitrag anzeigen

SiD

Registriert seit: 17. Jul 2003
52 Beiträge
 
#5

Re: ntdll.dll Zugriffsverletzung bei ComboBox

  Alt 3. Jun 2004, 10:10
Moin,

also ich bin echt am verzweifeln, die blöde Meldung kommt immer noch
so jetzt etwas mehr Quellcode.
Habe diesmal alle TStrings in Hauptformuler Created und die werde auch nur da Destroyt.



Create Funktion
Delphi-Quellcode:
procedure TfrmAuftrag_Auftrag_Suchen.FormCreate(Sender: TObject);
var
     sTemp:TStrings;
begin
    inherited;
    sTemp:=TStringlist.Create;
    try
        try
            //Mitarbeiter
            Standard_Lesen_Mitarbeiterliste(sTemp, frmHauptmenue_Auswahlmenue.sMitarbeiter_id, true);
            cboMitarbeiter.Items.Clear;
            cboMitarbeiter.Items.AddStrings(sTemp);
        finally
            sTemp.Free;
        end;
    except
        //Die Auswertung kommt später
    end;
end;
Das ist eine Unit die nur für Laden zuständig ist
Delphi-Quellcode:
//####################
//# Mitarbeiterliste #
//####################
procedure Standard_Lesen_Mitarbeiterliste(Mitarbeiterliste, Mitarbeiterliste_id:TStrings;Leerzeile:boolean);
begin
    try
        //Daten initialisieren
        If Mitarbeiterliste<>NIL then
        begin
            //Kann initaliaisiert werden
            Mitarbeiterliste.Clear;
            If Leerzeile then Mitarbeiterliste.Add('');
        end;
        If Mitarbeiterliste_id<>NIL then
        begin
            //Kann initaliaisiert werden
            Mitarbeiterliste_id.Clear;
            If Leerzeile then Mitarbeiterliste_id.Add('0');
        end;
        Assert(Assigned(frmDatamodul));
        With frmDatamodul.fsel_Mitarbeiter do
        begin
            try
                Close;
                Parameters.ParamByName('Mitarbeiter_id').Value:= null;
                Open;
                While not Eof do
                begin
                    If Mitarbeiterliste<>NIL then Mitarbeiterliste.Add(FieldByName('Username').AsString);
                    If Mitarbeiterliste_id<>NIL then Mitarbeiterliste_id.Add(FieldByName('Mitarbeiter_id').AsString);
                    next;
                end;
            finally
                Close;
            end;
        end;
    except
        //Die Auswertung kommt später
    end;
end;
Wenn Das Formular geöffnet wird, wird eine Initialisierungsfunktion gestartet
Delphi-Quellcode:
//#################
//# Formulat Init #
//#################
procedure TfrmAuftrag_Auftrag_Suchen.Init;
begin
    cboMitarbeiter.ItemIndex:= cboMitarbeiter.Items.IndexOf(Bestimme_Benutzername); //Bestimme_Benutzername liefert den Name des angemeldeten Benutzers
    ...
    ...
    ...
    Show;
end;
Es wird noch der richtige Name aus der cbo ausgewählt. Aber wenn man die cbo anklickt kommt die Fehlermeldung (ntdll.dll ......)
  Mit Zitat antworten Zitat