Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Infos von z.b. \\server\test\ lesen (https://www.delphipraxis.net/162228-infos-von-z-b-%5C%5Cserver%5Ctest%5C-lesen.html)

DelTurbo 13. Aug 2011 18:11

Infos von z.b. \\server\test\ lesen
 
Hi,
ich habe mir cxdrive in mein Programm eingebaut. Das klappt auch super. Blos wenn ich netzwerk laufwerke habe versagt es leider. Ich bekomme nicht zurück wie gross (Bytes) das teil ist, noch was frei ist oder was belegt ist. Auch nicht den Volumenamen.

Wäre toll wenn mir jemand weiterhelfen könnte. Google und das forum suche ich seit ca. 1,5 stunden ab. Ich finde aber meistens nur wie man laufwerke verbindet.

Achso, das netzlaufwerk ist NICHT gemappt. Hätte ich einen Buchstaben, z.b. Z dann geht es auch mit cxdrive. http://www.torry.net/authorsmore.php?id=1084

Danke im voraus

samso 13. Aug 2011 19:20

AW: Infos von z.b. \\server\test\ lesen
 
Ich kenne CxDrive nicht. Ich weiß aber das die Windows Api-Funktionen auch mit einem Netzwerklaufwerk zusammen funktioniert. Das Laufwerk muss dazu nicht gemappt sein. Trotzdem musst Du am Server angemeldet sein. Wenn Wenn Du Dich via

net use \\server\test <passwort>/user:<username>

bei dem Server anmeldest, funktioniert es dann?

DelTurbo 13. Aug 2011 20:26

AW: Infos von z.b. \\server\test\ lesen
 
Ja das geht. Ich möchte die infos auslesen. Ich lese alle files ein. Grösse und Uhrzeit der Datein bekomme ich ja dann.

Mir Fehlt folgendes:
VolumeName
Size (also grösse des laufwerks)
Free (wieviel noch frei ist)
InUse (wieviel belegt ist)
Eventuell Filessystem wenn das geht, also ob FAT oder NTFS (beim Samba ext2,ext3 usw.)

Das Filesystem wäre nicht so wichitg. Aber die anderen Daten bräuchte ich schon.

Gruss

sx2008 13. Aug 2011 20:39

AW: Infos von z.b. \\server\test\ lesen
 
MSDN-Library durchsuchenGetVolumeInformation aufrufen.
siehe auch: http://www.delphicorner.f9.co.uk/articles/wapi2.htm

DelTurbo 13. Aug 2011 22:53

AW: Infos von z.b. \\server\test\ lesen
 
Vielen Dank!
Von deiner antwort bin ich hier gelandet http://www.swissdelphicenter.ch/de/showcode.php?id=654

Dann habe ich einen 3zeiler gemacht. Der sogar geht :-D

Delphi-Quellcode:
function GetDiskSize(var free_size, total_size: Int64): Boolean;
begin
    GetDiskFreeSpaceEx(PChar('\\server\volume1'), Free_size, Total_size, nil);
end;
Und es klappt. Nun werde ich noch VolumeInfo versuchen. Vielen vielen dank für den stups in die richtige richtung. Fehlerabfragen kommen natürlich noch rein. Was InUse ist kann ich ja mit den beiden werten berechnen. Das ist das kleinste prob.

Gruss und noch einen schönen "Restabend". Leider bin ich hundemüde, sonst wrürde ich das heute noch machen, aber das pack ich leider nichtmehr.

Nochmals Danke!

samso 14. Aug 2011 06:50

AW: Infos von z.b. \\server\test\ lesen
 
Damit sollte es gehen (Drive muss mit einem Backslash (->SysUtils.IncludeTrailingPathDelimiter) enden. Also z.B. "\\server\volume1\").
Delphi-Quellcode:
function VolumeID(const Drive: String): string;
var
  OldErrorMode: Integer;
  NotUsed, VolFlags: Cardinal;
  Buf: array [0..MAX_PATH] of Char;
begin
  OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
  try
    Buf[0] := #$00;
    if GetVolumeInformation(PChar(Drive), Buf, MAX_PATH+1, nil, NotUsed, VolFlags, nil, 0)
    then
      SetString(Result, Buf, StrLen(Buf))
    else
      Result := '';
  finally
    SetErrorMode(OldErrorMode);
  end;
end;

DelTurbo 14. Aug 2011 11:03

AW: Infos von z.b. \\server\test\ lesen
 
Super, klappt. :thumb:

Und ja es stimmt. Es muss mit \ enden. Warum es bei oben (in dem einzeiler) auch ohne geht weiss ich nicht. Also es geht beides. Mit und ohne \ am ende.

Gruss und vielen dank

DeddyH 14. Aug 2011 11:08

AW: Infos von z.b. \\server\test\ lesen
 
Kleiner Vorschlag:
Delphi-Quellcode:
if GetVolumeInformation(PChar(IncludeTrailinPathDelimiter(Drive)), Buf, MAX_PATH+1, nil, NotUsed, VolFlags, nil, 0)
Dann ist es egal, ob der Backslash übergeben wurde oder nicht.

DelTurbo 14. Aug 2011 11:25

AW: Infos von z.b. \\server\test\ lesen
 
Gute idee, danke. Werde ich reinmachen. Wie gesagt, es war gestern abend und ich hatte es einfach vergessen, trotzdem klappt es. Hatte mich nur gewundert.

Ich versuche im moment die Seriennummer auszulesen. Also von \\server\volume1\. Das scheint auch zu gehen. Nur muss ich sehen ob die dann auf allen rechnern gleich ist, was ich hoffe. :)

EDIT: Zur info.. Ja, ist gleich. Ich habe die nun von 4 Rechnern gelesen. Auch gemountet und nicht gemountet. Ich bin bei Windows immer auf alles gefasst....


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 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