Avatar billede mikkel_sommer Nybegynder
19. november 2006 - 17:35 Der er 8 kommentarer og
1 løsning

En metode som undersøger hvor meget fri plads der er på et drev.

Jeg kunne godt tænke mig at lave en metode som tager et bogstav som parameter og så, hvis der findes et drev med det bogstav, undersøger hvor meget fri plads der er på dette drev.

Jeg har kigget lidt på DirectoryInfo klassen men har ikke rigtig fundet ud af noget brugbart.

Håber der er nogen som kan hjælpe mig lidt på vej.
Avatar billede davidfossil Nybegynder
19. november 2006 - 17:47 #1
Hmm, gad vide om ikke du bliver nødt til at kalde en funktion i en eller anden Windows-dll. Idéen med drevbogstaver er jo en Windows/DOS ting, så det er næppe bygget direkte ind i System.IO.
Avatar billede arne_v Ekspert
19. november 2006 - 17:54 #2
hvis du er på .NET 2.0 kan du bruge DriveInfo klassen
Avatar billede arne_v Ekspert
19. november 2006 - 17:57 #3
i System.IO

med .NET 1.1 er DllImport af GetDiskFreeSpace nødvendigt
Avatar billede mikkel_sommer Nybegynder
19. november 2006 - 18:33 #4
arna_v - Det er 1.1 hvordan bærer jeg mig ad med det der DllImport?
Avatar billede arne_v Ekspert
19. november 2006 - 18:35 #5
[DllImport("kernel32.dll", SetLastError=true)] static extern int GetDiskFreeSpaceA ( string lpRootPathName, ref int lpSectorsPerCluster, ref int lpBytesPerSector, ref int lpNumberOfFreeClusters, ref int lpTtoalNumberOfClusters)
Avatar billede arne_v Ekspert
19. november 2006 - 18:39 #6
eksempel:

/*
* Created by SharpDevelop.
* User: Arne
* Date: 19-11-2006
* Time: 12:35
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Runtime.InteropServices;

namespace E
{
    public class MainClass
    {
        [DllImport("kernel32.dll", SetLastError=true)] static extern int GetDiskFreeSpaceA ( string lpRootPathName, ref int lpSectorsPerCluster, ref int lpBytesPerSector, ref int lpNumberOfFreeClusters, ref int lpTtoalNumberOfClusters);
        public static void Main(string[] args)
        {
            int spc = 0, bps = 0, fre = 0, tot = 0;
            GetDiskFreeSpaceA("C:", ref spc, ref bps, ref fre, ref tot);
            Console.WriteLine(((long)fre * spc * bps) + " of " + ((long)tot * spc * bps) + " is free");
        }
    }
}
Avatar billede arne_v Ekspert
19. november 2006 - 18:40 #7
casten til long er for at undgå overflow i int
Avatar billede mikkel_sommer Nybegynder
19. november 2006 - 23:58 #8
Super nice arne, smid et svar for point.
Avatar billede arne_v Ekspert
20. november 2006 - 00:02 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester