Thema: WLAN Kieker

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#6

AW: WLAN Kieker

  Alt 12. Mai 2014, 19:54
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (12. Mai 2014 um 20:00 Uhr)
  Mit Zitat antworten Zitat