Einzelnen Beitrag anzeigen

scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#2

Re: Bekomm immer eine Zugriffsverletzung

  Alt 25. Nov 2003, 23:20
Ich würde sagen, das liegt an der Device-Liste, dabei hast dudoch schon eine so schöne Variable dafür: FDevices. Ich würde mal folgendes ändern.

Delphi-Quellcode:
function TCapSource.GetDevices:TStringList;
var i:integer;
begin
  If Assigned(FDevices) then
    FreeAndNil(FDevices);

  FDevices := TStringlist.Create;
  Capenum := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
  for i := 0 to Capenum.CountFilters - 1 do
    FDevices.Add(Capenum.Filters[i].FriendlyName);

  result := FDevices;
end;
Ausserdem solltest du noch einen constructor erstellen:

Delphi-Quellcode:
TCapSource = class
  // ...
public
  constructor Create;
  // ...
end;
Delphi-Quellcode:
constructor TCapSource.Create;
begin
  inherited;

  FDevices := nil;
end;

PS: Deine Zugriffsverletzung kommt wohl dadurch, das DeviceListe ja innherhalb der Funktion deklariert ist und deshalb nach dem Abschluss der Funktion wieder freigegeben wird.
  Mit Zitat antworten Zitat