Was soll denn der Parameter machen?
Und dann sollte man sich entscheiden:
- entweder Fehlerbehandlung über Rückgabewerte
- oder Fehlerbehandlung mitteld Exceptions.
Beides geht nicht, denn das Result kann niemals False sein.
Und in einem Timer sollter man niemals Exceptions oder sonstige modale Dialoge anzeigen/verursachen.
Es sei denn man deaktiviert so lange den Timer und das nächste Event kommt nicht sofort, nachdem der Timer wieder freigegeben wurde, bzw. der Timer wird danach für immer/länger deaktiviert.
Delphi-Quellcode:
// Liste der verfügbaren Netzwwerke holen.
procedure TNativeWifi.GetAvailableNetworkList;
var
dwResult: HRESULT;
begin
if Assigned (pAnList) then begin // Ggfs. Netzwerkliste freigeben.
WlanFreeMemory(pAnList);
pAnList := nil;
end;
dwResult := WlanGetAvailableNetworkList(hClient, @pIfList^.InterfaceInfo[pIfList^.dwIndex].InterfaceGuid, 0, nil, @pAnList);
if dwResult <> ERROR_SUCCESS then
raise EWLANError.CreateFmt('WlanGetAvailableNetworkList fehlgeschlagen mit Fehler %d', [dwResult])
end;
Delphi-Quellcode:
// Liste der verfügbaren Netzwwerke holen.
function TNativeWifi.GetAvailableNetworkList: Boolean;
var
dwResult: HRESULT;
begin
if Assigned (pAnList) then begin // Ggfs. Netzwerkliste freigeben.
WlanFreeMemory(pAnList);
pAnList := nil;
end;
dwResult := WlanGetAvailableNetworkList(hClient, @pIfList^.InterfaceInfo[pIfList^.dwIndex].InterfaceGuid, 0, nil, @pAnList);
Result := dwResult = ERROR_SUCCESS;
end;
Letzteres ist blöd, da hier sämtliche Fehlerinfos verloren gehen, also wenn schon, dann eher so. (oder den Fehler als Property "letzter Fehlercode" ins TNativeWifi)
Delphi-Quellcode:
// Liste der verfügbaren Netzwwerke holen.
function TNativeWifi.GetAvailableNetworkList: HRESULT;
begin
if Assigned (pAnList) then begin // Ggfs. Netzwerkliste freigeben.
WlanFreeMemory(pAnList);
pAnList := nil;
end;
Result := WlanGetAvailableNetworkList(hClient, @pIfList^.InterfaceInfo[pIfList^.dwIndex].InterfaceGuid, 0, nil, @pAnList);
end;
Und bei Ersterem muß natürlich ein Try-Except außen drumrum, wenn es im Timer aufgerufen wird.