Avatar billede pcl Nybegynder
08. september 2002 - 19:09 Der er 12 kommentarer og
1 løsning

Vælg filer på en speciel måde

Jeg har et lille problem med at udvælge nogle filer. Problemmet er følgende.

Jeg skal vælge 1 tilfældig fil i alle underkataloger under et bestemt katalog. Disse skal så formentlig hentes ind i et array og vises på en aspx side med ca. 4 filer (billeder) i hver række.

Er der nogen der kan hjælpe mig med at komme igang med dette?
Avatar billede cms Nybegynder
08. september 2002 - 22:35 #1
<script runat="server">
  public class DirectoryChooser {
 
    public String[] Files;
   
    private int I = 0;
    private Random R;
 
    private Int32 GetRandomSeed(){
      Int32 R;

      DateTime Now = DateTime.Now;
      R = Now.Day;
      R = R *  24 + Now.Hour;
      R = R *  60 + Now.Minute;
      R = R *  60 + Now.Second;
      R = R * 1000 + Now.Millisecond;

      return R;
    }
   
    private void ProcessDir(String Dir){
      String[] DirFiles = Directory.GetFiles(Dir);
      if (DirFiles.Length>0){
        String FName = DirFiles[R.Next(0, DirFiles.Length-1)];
        Files[I++] = FName;
      }
    }
   
    private void ProcessDirs(String MainDir){
      String[] Dirs = Directory.GetDirectories(MainDir);
      Files = new String[Dirs.Length];
      foreach (String Dir in Dirs)
        ProcessDir(Dir);
    }
   
    public DirectoryChooser (String MainDir){
      R = new Random(GetRandomSeed());
      ProcessDirs(MainDir);
    }
  }
</script>

Denne kan bruges således:

    <%
      DirectoryChooser DC = new DirectoryChooser(@"D:\hejsa\mappe");
    %>
    <% foreach (String File in DC.Files){ %>
      <img src="<%=File%>" />Url: <%=File%><br />
    <% } %>
Avatar billede pcl Nybegynder
09. september 2002 - 12:52 #2
Det virker sgu , fedt mand. Jeg har bare det lille problem at det skal være i VB. Nu har jeg oversat det og det virker næsten.
Hvis du kan VB kunne du måske lige hurtigt kigge på det.
Visningen er bæsten rigtig , men der kommer en ekstra "enhed" med som er tom.
På for hånd tak du får point og nogle flere hvis du kan  hjælpe med sidste problem.

<%@ Import Namespace="System.IO" %>
<%@ Import NameSpace="System" %>
<%@ Import Namespace="System.Web" %>
<html>
<head>
<script runat="server" language="vb">

Public Class DirectoryChooser
 
  Public Files() As String
 
  Private I As Integer = 0
  Private R As Random
 
 
  Private Function GetRandomSeed() As Int32
      Dim R As Int32
     
      Dim Now As DateTime = DateTime.Now
      R = Now.Day
      R = R * 24 + Now.Hour
      R = R * 60 + Now.Minute
      R = R * 60 + Now.Second
      R = R * 1000 + Now.Millisecond
     
      Return R
  End Function 'GetRandomSeed

 
Private Sub ProcessDir(Dir As String)
        Dim DirFiles() as string = Directory.GetFiles(Dir)

      If DirFiles.Length > 1 Then
        Dim FName As String = DirFiles(R.Next(0, DirFiles.Length - 1))
       
        Files(I) = FName
        I = I + 1
       
      End If
  End Sub 'ProcessDir
 
 


  Private Sub ProcessDirs(MainDir As String)
      Dim Dirs() As String = Directory.GetDirectories(MainDir)
      Files = New String(Dirs.Length){}
      Dim Dir As String
      For Each Dir In  Dirs
        ProcessDir(Dir)
      Next Dir
  End Sub 'ProcessDirs
   
  Public Sub New(MainDir As String)
      R = New Random(GetRandomSeed())
      ProcessDirs(MainDir)
  End Sub 'New
End Class 'DirectoryChooser

 
Sub Page_load()
Dim DC  as new DirectoryChooser("C:\Inetpub\wwwroot\wwwbetfiguerascom\Pictures")
Dim strFile as string

For each strFile In DC.Files
Response.write("<img src=" & strFile & " />Url: " & strFile & "<br />")
next

End Sub

</script>
</head>
<Body>


    </body>
    </html>


her er koden:
Avatar billede cms Nybegynder
09. september 2002 - 16:36 #3
Har du tjekket at der rent faktisk er en fil i det bibliotek som laver et tomt felt?
Avatar billede pcl Nybegynder
09. september 2002 - 16:48 #4
YES DET HAR JEG.
PROBLEMMET ER AT I VB LØSNINGEN BLIVER DER TILSYNELADENDE DANNET ET EKSTRA KATALOG. DET BLIVER DER IKKE I CS LØSNINGEN. DEN VIRKER FINT.
SÅ HVIS JEG HAR 7 KATALOGER MED BILLEDER KOMMER DER 8 I VB LØSNINGEN SELV OM DER KUN EKSISTERER 7 KATALOGER.
DET ER SIKKERT I DENNE SUB DET GÅR GALT.:

Private Sub ProcessDir(Dir As String)
        Dim DirFiles() as string = Directory.GetFiles(Dir)

      If DirFiles.Length > 1 Then
        Dim FName As String = DirFiles(R.Next(0, DirFiles.Length - 1))
       
        Files(I) = FName
        I = I + 1 ''HER OMKRING
       
      End If
  End Sub 'ProcessDir
Avatar billede cms Nybegynder
09. september 2002 - 16:59 #5
hmm...
Jeg kan ikke se nogle fejl i din oversættelse.
Avatar billede cms Nybegynder
09. september 2002 - 17:03 #6
For at være sikker på du får korrekte resultater:

For each strFile In DC.Files
  If strFile.Length>0 Then
    Response.write("<img src=" & strFile & " />Url: " & strFile & "<br />")
  End If
Next
Avatar billede cms Nybegynder
09. september 2002 - 17:03 #7
svar
Avatar billede pcl Nybegynder
09. september 2002 - 17:27 #8
Så får jeg bare denne fejl:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. (FEJLEN SKER I LINJE 69)

Source Error:


Line 67:
Line 68: For each strFile In DC.Files
Line 69:  If strFile.Length>0 Then  'DET ER DEN ER GAL
Line 70:    Response.write("<img src=" & strFile & " />Url: " & strFile & "<br />")
Line 71:  End If
Avatar billede cms Nybegynder
09. september 2002 - 17:38 #9
oh - then skriv:
69: If strFile <> Nothing And strFile.Length>0 Then
  ...
71: End If
Avatar billede pcl Nybegynder
09. september 2002 - 17:38 #10
ok man kan selvfølgelig gøree sådan her:

For each strFile In DC.Files
Try
  If strFile.Length() > 0 Then
    Response.write("<img src=" & strFile & " />Url: " & strFile & "<br />")
  End If
Catch exp as exception
'response.write(exp.message)
End try
Next

MEN ER DET NU SMART/GODT?????????
Avatar billede cms Nybegynder
09. september 2002 - 19:39 #11
Du fik min kommentar?
Avatar billede pcl Nybegynder
09. september 2002 - 20:27 #12
Ja hvis man bare skriver
If strFile <> Nothing Then

så virker det.

det med strFile.Length>0 virker ikke , men det er vel også ligemeget.
Avatar billede cms Nybegynder
09. september 2002 - 21:15 #13
Jeps :) Tilsyneladende.
Tak for points =)
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