AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Share zu Laufwerksbuchstabe finden?
Thema durchsuchen
Ansicht
Themen-Optionen

Share zu Laufwerksbuchstabe finden?

Ein Thema von Bernhard Geyer · begonnen am 28. Jan 2008 · letzter Beitrag vom 29. Mai 2009
Antwort Antwort
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

Re: Share zu Laufwerksbuchstabe finden?

  Alt 28. Mai 2009, 13:30
Zitat von raiguen:
API-Funktion(en): WNetOpenEnum, WNetEnumResource, WNEtCloseEnum... sh auch Win32 Developers Refernez für weitere Information(en).
Beispiel für die Verwendung findest Du hier
Hallo Leute,

das Code-Beispiel aus dem Swissdelphicenter auf das hier verwiesen wird hat einen Bug. Er führt zu einem Specherleck. Der Fehler steckt hier:
Delphi-Quellcode:
  repeat
    lpnrDrv := PNETRESOURCE(GlobalAlloc(GPTR, cbBuffer));
    dwResult := WNetEnumResource(hEnum, cEntries, lpnrDrv, cbBuffer);
    if (dwResult = NO_ERROR) then
    begin
      s := 'Network drives:'#13#10;
      for i := 0 to cEntries - 1 do
      begin
        if lpnrDrv^.lpLocalName <> nil then
          s := s + lpnrDrv^.lpLocalName + #9 + lpnrDrv^.lpRemoteName;
        Inc(lpnrDrv); // hier wird die Adresse Incrementiert
      end;
    end
    else if dwResult <> ERROR_NO_MORE_ITEMS then
    begin
      s := s + 'Cannot complete network drive enumeration';
      GlobalFree(HGLOBAL(lpnrDrv));
      break;
    end;
    GlobalFree(HGLOBAL(lpnrDrv)); // hier wird nicht die allociierte Speicheradresse sondern die incrementierte Adresse angegeben
  until (dwResult = ERROR_NO_MORE_ITEMS);
Entweder man merkt sich die Startadresse für lpnrDrv oder man decrementiert die Adresse um genau die Anzahl, um die sie incrementiert wurde.

So führt das zu bösen Speicherlecks.

Gruß Oki
42
  Mit Zitat antworten Zitat
Antwort Antwort


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