AGB  ·  Datenschutz  ·  Impressum  







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

Invalid Pointer TObjectList

Ein Thema von bl3nder · begonnen am 19. Aug 2008 · letzter Beitrag vom 26. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
bl3nder

Registriert seit: 18. Aug 2006
89 Beiträge
 
#11

Re: Invalid Pointer TObjectList

  Alt 26. Aug 2008, 09:55
Ich hab extreme Performance- und Speicherprobleme, sprich ich weiß nicht wie genau ich mit den Objekten umgehen soll. Hier mal ein Auszug aus meinem Code:

MONITOR SUCH FUNKTION
Delphi-Quellcode:
function TMonitorSearch.DBSearch(Modus: String='vague'; ID: Integer=0;
  Model: String=''; InventoryNumber: String=''): TObjectList;
var
FMList: TObjectList;
I: Integer;
FMyMonitor: TMonitor;
begin

  FMList := TObjectList.Create;

  // Search in the database for monitors by using the criteria
  FMQuery.Close;

  FMQuery.SQL.Text := 'SELECT ';
//etc

  FMQuery.Open;

  while not FMQuery.EOF do
  begin
    FMyMonitor := TMonitor.Create;

    // Use search result to create a new monitor object
    FMyMonitor.SetID(FMQuery.FieldByName('MonitorID').AsInteger);
    FMyMonitor.SetModel(FMQuery.FieldByName('Modell').AsString);
//etc

    // Add monitor to a list of monitor ojects
    FMList.Add(FMyMonitor);


    FMQuery.Next;
  end;


  Result := FMList; // DIE FUNKTION LIEFERT ALSO EINE LISTE VON MONITOR OBJECTS ZURUECK

end;
WORKSTATION SUCH FUNKTION
Delphi-Quellcode:

function TWorkstationSearch.DBSearch(Modus: String='vague'; ID: Integer=0;
 Computername: String=''; Model: String=''; InventoryNumber: String='';
   Room: String=''; Username: String=''): TObjectList;
var
FWSList: TObjectList;
FMList: TObjectList;
FMyWorkstation: TWorkstation;
I: Integer;
begin
  FWSList := TObjectList.Create;



  // Search in the database for workstations by using the criteria
  FWQuery.Close;

  FWQuery.SQL.Text := 'SELECT';
//etc
  FWQuery.Open;

  while not FWQuery.EOF do
  begin
    // Use search result to create a new workstation object
    FMyWorkstation := TWorkstation.Create;


    FMyWorkstation.SetID(FWQuery.FieldByName('ArbeitsplatzID').AsInteger);
    FMyWorkstation.SetMonitor1ID(FWQuery.FieldByName('MonitorID').AsInteger);
//etc

    // Add workstation to a list of workstation ojects
    FWSList.Add(FMyWorkstation);

    FWQuery.Next;
  end;

  FWQuery.Free;
  Result := FWSList; // DIE FUNKTION LIEFERT ALSO EINE LISTE VON WORKSTATION OBJECTS ZURUECK

end;


Workstation Suche; Beinhaltet die Funktionsaufrufe
Delphi-Quellcode:
//procedure BTNCLICK


//etc



    FWSearch := Model.TWorkstationSearch.Create;
    FMSearch := Model.TMonitorSearch.Create;

//etc

else if (RBtnWorkstation.Checked) then
  {$REGION RBTNWorkstation}
  begin
    Grid.ColWidths[0] := 25;
    Grid.ColWidths[1] := 60;
//etc
    Grid.Cells[0,0] := 'ID';
    Grid.Cells[1,0] := '';
//etc






    FWList := FWSearch.DBSearch('vague',FMyID,FMyComputername,FMyModel,
      FMyInventoryNumber,FMyRoom,FMyUsername); // FWList wird mit WORKSTAION objects befüllt durch den Funktionsaufruf


// Alle Workstation Objekte nun durchlaufen:
    I := 0;
    while (I<FWList.Count) do
    begin
      FMyWorkstation := FWList[I] as TWorkstation;

      // Fill the Grid with the information of the FMyWorkstation object
      Grid.Cells[0,Grid.RowCount-1] := IntToStr(FMyWorkstation.GetID);
      Grid.Cells[1,Grid.RowCount-1] := FMyWorkstation.Getname;
//etc

      // Get Monitor Information
      FMyMonitorID := FMyWorkstation.GetMonitor1ID;
      FMList := FMSearch.DBSearch('vague',FMyMonitorID);
      FMyMonitor := FMList[0] as Model.TMonitor;

      Grid.Cells[3,Grid.RowCount-1] := FMyMonitor.GetModel;

      FMyMonitor.Free;
      


      Grid.RowCount := Grid.RowCount +1;
      Inc(I);
    end;

  end


Wäre jemand so freundlich und würde das kurz verstehen und mir sagen wo die Probleme liegen, dass die Workstation Datenbank abfrage so viel Zeit und Speicher in Anspruch nimmt ? Würde es naemlich sehr gerne objektorientiert lösen.
  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 05:48 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