AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht erkärliche EAccessVoilation

Ein Thema von I.A · begonnen am 25. Feb 2009 · letzter Beitrag vom 27. Feb 2009
Antwort Antwort
Seite 2 von 2     12   
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Nicht erkärliche EAccessVoilation

  Alt 26. Feb 2009, 19:12
Eigentlich sollte TStrings auch funktionieren, soweit ich weiß bietet die TStringlist nur etwas mehr Funktionen wie Sortierung etc. Es kann aber sein, dass es als abstract deklarierte Methoden gibt. Erst wenn auf diese zugegriffen würde, dürfte es aber die Exception geben.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Nicht erkärliche EAccessVoilation

  Alt 26. Feb 2009, 19:24
Zitat von NamenLozer:
Eigentlich sollte TStrings auch funktionieren, soweit ich weiß bietet die TStringlist nur etwas mehr Funktionen wie Sortierung etc. Es kann aber sein, dass es als abstract deklarierte Methoden gibt. Erst wenn auf diese zugegriffen würde, dürfte es aber die Exception geben.
TStrings hat selbst nicht die Funktionalität, erst die abgeleiteten Klassen implementieren die. Beispiel:    procedure Insert(Index: Integer; const S: string); virtual; abstract; Und auf Insert leitet TStrings dann Add z.B. um, so dass man das nicht in der abgeleiteten Klasse mehr implementieren muss.
Deshalb gibt es aber eine Exception. Dass die erst bei der Verwendung auftritt, ist richtig.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#13

Re: Nicht erkärliche EAccessVoilation

  Alt 27. Feb 2009, 16:52
Das meiste wurde bereits gesagt:

Nur weil der Name der Klasse mit 'dbctrl' beginnt, kann man nicht einfach annehmen das es sich um ein TMYDBCtrlGrid handelt. Nur wenn es tatsächlich ein TMYDBCtrlGrid ist, darf auf das Property Panel zugegriffen werden. Der Parent könnte auch nil sein.
Delphi-Quellcode:
function TCR_DB_Editor.GetRealParent : TWinControl;
begin
  Result := Parent;
  while Assigned(Result) do
  begin
    if Result is TMYDBCtrlGrid then
    begin
      Result := TMYDBCtrlGrid(Result).Panel;
      Exit;
    end;
    Result := Result.Parent;
  end;
end;
Die DataSource kann im Prinzip auch nil sein, allerdings muss vor jeder Zuweisung der DataLink zugewiesen sein.
Delphi-Quellcode:
procedure TCR_DB_Editor.SetDataSource(Value: TDataSource);
begin
  if Assigned(FDataLink) then
    FDataLink.DataSource := Value;
end;
Hier sollte eigentlich ebenfalls die Zuweisung von nil erlaubt sein:
Delphi-Quellcode:
procedure TDBInputMask.SetDataSource(ADataSource: TDataSource);
var
  idx: Integer;
  obj: TObject;
{...} 
begin
  if FDataSource <> ADataSource then
  begin
    {An dieser Stelle sollten erst einmal alle für die bisherige DataSource
     erzeugten Steuerelemente freigegeben werden.}

    FEdits.Clear;
    
    FDataSource := ADataSource;
    if Assigned(FDataSource) then
    begin
      FDataSource.DataSet.GetFieldNames(FEdits);
      for idx := 0 to FEdits.Count - 1 do
      begin
        SetLabels(idx, TDBText.Create(self));
        //SetInputs(idx, TDBEdit.Create(self));
        if idx < FInputs.Count then
          obj := FInputs[idx]
        else
          obj := nil;
        
        if obj is TDBInputLine then
        begin
          TDBInputLine(FInputs[idx]).DataSource := FDataSource;
          TDBInputLine(FInputs[idx]).DataField := FEdits[idx];
        end;
        if obj is TDBCheckBox then
        begin
          TDBCheckBox(FInputs[idx]).DataSource := FDataSource;
          TDBCheckBox(FInputs[idx]).DataField := FEdits[idx];
        end;
{...}
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 09:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz