Private _Files As FileInfo()

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    Private _Files As FileInfo()

    Hallo zusammen,

    wie wird dieses Array() bestückt ?

    VB.NET-Quellcode

    1. Private _Files As FileInfo()


    Ich würde gerne meine eigene Klasse dort reinlegen. Habe aber noch nie damit gearbeitet.

    Folgendes funktioniert nicht:

    VB.NET-Quellcode

    1. Public Function RecycleBin_GetFiles() As Array
    2. Dim RB_Files_() As RecycleBin_Items
    3. RB_Files_ = New ArrayList()
    4. For i As Integer = 0 To RecycleBin.Items().Count - 1
    5. Dim FI As Shell32.FolderItem = RecycleBin.Items().Item(i)
    6. ' Ab hier sollen die Klasseneinträge in ein Arry und nicht in eine ListOf....
    7. RB_Files_(i) = New RecycleBin_Items(FI.Name, _
    8. FI.Type, _
    9. FI.ModifyDate, _
    10. CDate(RecycleBin.GetDetailsOf(FI, 2)), _
    11. FI.Path, _
    12. RecycleBin.GetDetailsOf(FI, 1), _
    13. RecycleBin.GetDetailsOf(FI, 3).ToString)
    14. Next
    15. Return RB_Files_
    16. End Function


    In eine ListOf und dann an eine DGV weitergeben funktioniert bei mir.
    Aber das mit in einem Array() bekomme ich nicht hin.

    Könnte mir das mal jemand erklären ?

    vielen dank
    Bernd
    Moin Bernd,
    das müsstest Du mir ReDim _Files(17) hochdimensionieren, das ist aber nicht sonderlioch elegant.
    Mach lieber eine

    VB.NET-Quellcode

    1. Private _Files As New List(Of FileInfo)
    , da kannst Du mit Add() Deine Elemente hinten dran hängen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin Rod.
    ja mit einer ListOf habe ich das bereits. Klar.
    Die kann ich dann direkt an ein DGV hängen.
    Leider geht eine ListOf aber nicht an eine ListBox

    VB.NET-Quellcode

    1. ListBox1.DataSource = ....


    Ich wollte mehrere Möglichkeiten anbieten.
    List für DGV, ListBox, evtl. für ListView.

    Die lösung mit Arry(9 wie die das bei FileInfo machen ist schon was feines.

    Die Idee dafür kam mir übrigens hier von EDR

    Saubere schnelle Lösung.

    viele dank

    Bernd
    Nimm doch einfach eine List(Of FileInfo), die kannst du wenn sie fertig befüllt ist mit ToArray in ein Array vom Typ FileInfo umwandeln.
    Außerdem würde ich als Rückgabetyp für die Funktion statt Array FileInfo() nehmen.

    Infinity schrieb:

    Nimm doch einfach eine List(Of FileInfo)

    Ich würde gerne meine eigene Klasse dort reinlegen. Habe aber noch nie damit gearbeitet.

    Ich glaube du hast aber völlig falsch gelesen.

    Mit ListOf.... habe ich es. und es ist auch fertig.
    Es ist meine Eigene Klasse. Also kann ich mit der FileInfo Klasse nichts anfagen.

    Aber das mit ToArray das könnte ich mal checken.

    danke dir

    bernd

    edit: hatte ich bereits versucht. bringt aber was anderes.

    VB.NET-Quellcode

    1. File_Informationen = New_Job.RecycleBin_Items.ToArray

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bernd“ ()

    ToArray Hab ich auch versucht, da meckert er, dass er ein String-Array nicht in ein Object-Array konvertieren kann.
    Wie wäre es, wenn Du Dir eine Befehlserweiterung ToObjectArray() schreibst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    picoflop schrieb:

    Und dann ganz normal .ToArray

    Das habe ich versucht.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Function RecycleBin_GetFiles() As RecycleBin_Items()
    2. Dim RB_Files_() As RecycleBin_Items = Nothing
    3. Array.Resize(RB_Files_, RecycleBin.Items().Count)
    4. For i As Integer = 0 To RecycleBin.Items().Count - 1
    5. Dim FI As Shell32.FolderItem = RecycleBin.Items().Item(i)
    6. ' ' Ab hier sollen die Klasseneinträge in ein Arry und nicht in eine ListOf....
    7. RB_Files_(i) = New RecycleBin_Items(FI.Name, _
    8. FI.Type, _
    9. FI.ModifyDate, _
    10. CDate(RecycleBin.GetDetailsOf(FI, 2)), _
    11. FI.Path, _
    12. RecycleBin.GetDetailsOf(FI, 1), _
    13. RecycleBin.GetDetailsOf(FI, 3), _
    14. FI.Size)
    15. Next
    16. Return RB_Files_
    17. End Function

    Mit dem Ergebnis

    VB.NET-Quellcode

    1. ListBox1.DataSource = New_Job.RecycleBin_GetFiles.toarray

    ToArray gibt es nicht.
    Lasse ich alle wg. Wird nur das Object angezeigt.

    VB.NET-Quellcode

    1. ListBox1.DataSource = New_Job.RecycleBin_GetFiles


    also irgendwas mache ich falsch oder es muss einen anderen Weg geben.

    Mit ListOf...
    Werden nur die Objecte zurückgegeben

    VB.NET-Quellcode

    1. ' Aus ListOf(
    2. Dim ListRBI As List(Of RS_BS_RecycleBin.RecycleBin_Items) = New List(Of RS_BS_RecycleBin.RecycleBin_Items)
    3. ListRBI = New_Job.RecycleBin_Items
    4. ' Nur Objekt werden angezeigt
    5. ListBox1.DataSource = ListRBI
    6. ' Nur Objekt werden angezeigt
    7. ListBox1.DataSource = ListRBI.ToArray
    8. '' FehlerMeldung = IList ...
    9. ListBox1.DataSource = ListRBI(0).RB_FileName


    also auch hier stimmt was nicht.

    Gehe ich die ListOf... Mit For Each durch. Dann werden die Elemente angezeigt.

    IList. kenne ich leider nicht.



    viele dank

    Bernd
    Hallo Bernd,
    hast du mal keine-strings-in-die-file-listbox von EDR angesehen? Als Datasource die List(Of deineKlasse ) und im Listbox.Displaymember die darzustellende Property angeben.

    Fiel Fergnügen

    Vatter

    Edit: Hier ist nochmal ein Beispiel von MSDN
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Ich gehe davon aus das:

    New_Job.RecycleBin_Items
    eine List(of ..) ist.

    Warum machst du dann:

    VB.NET-Quellcode

    1. Dim ListRBI As List(Of RS_BS_RecycleBin.RecycleBin_Items) = New List(Of RS_BS_RecycleBin.RecycleBin_Items)

    Eine List(of List(of ..)) ??
    Logisch wäre:

    VB.NET-Quellcode

    1. ListBox1.DataSource = New_Job.RecycleBin_Items


    fertisch ^^
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo @Vatter Alias(Oppa) ;) ,

    Vatter schrieb:

    hast du mal keine-strings-in-die-file-listbox von EDR angesehen?
    genau das hatte ich ja in Post1 geschrieben. Daher stammt die Idee. Was mit FleInfo() auch sofort Problemlos funktioniert.

    Aber der Link von msdn der ist Interessant, den schaue ich mir mal genauer an.
    lieben dank
    Bernd

    Edit:
    @Mono
    genau das habe ich doch in Post 11 gemacht. Hier nochmals. Es werden nur die Objekte an die ListBox übergeben.

    VB.NET-Quellcode

    1. ' Mono direkt übergeben
    2. ListBox1.DataSource = New_Job.RecycleBin_Items
    3. ' Mono To Array
    4. ListBox1.DataSource = New_Job.RecycleBin_Items.ToArray

    Im übrigen wird (das habe ich in einem anderen post gelernt) nur die Referenz übergeben.

    VB.NET-Quellcode

    1. ' Aus ListOf(
    2. Dim ListRBI As List(Of RS_BS_RecycleBin.RecycleBin_Items) = New List(Of RS_BS_RecycleBin.RecycleBin_Items)
    3. ListRBI = New_Job.RecycleBin_Items


    auch dir lieben dank
    Bernd

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Bernd“ ()

    @rotherford

    Ne habe ich gesetzt und dann nochmals alle Variationen durchprobiert. Hilft alles nichts. Irgend etwas übersehen ich.

    mal sehen ob EDR irgendwann ier reinschaut. viell. sieht er ja den Fehler.

    Ich danke dir trotzdem

    Bernd
    Ich hab deine Frage schon aus post#1 nicht verstanden

    Bernd schrieb:

    wie wird dieses Array() bestückt ?

    VB.NET-Quellcode

    1. Private _Files As FileInfo()
    Dassis nicht dein ernst, oder?
    Weil dort, wo du den Code gefunden hast, da wird es wohl auch bestückt werden.
    Ich würde gerne meine eigene Klasse dort reinlegen.
    wo rein? in ein FileInfo-Array? Das weißt du bereits, dass das nicht geht
    Folgendes funktioniert nicht:

    VB.NET-Quellcode

    1. Public Function RecycleBin_GetFiles() As Array
    2. Dim RB_Files_() As RecycleBin_Items
    3. RB_Files_ = New ArrayList()
    4. '...
    Wohl wahr - das funzt nicht: Erst RB_Files als RecycleBin_Items() deklarieren, und ihm dann ein ArrayList-Array zuweisen, dassis böse
    In eine ListOf und dann an eine DGV weitergeben funktioniert bei mir.
    bitte was? Also ich habe eine Ahnung was du meinst, aber weil funktionierende Ansätze besonders wertvoll sind, beschreib doch bitte genauer, was funktioniert:
    Was in eine ListOf..., und was bedeutet "dann an eine DGV weitergeben"?
    Aber das mit in einem Array() bekomme ich nicht hin.
    Wassn fürn Array()?

    Ist dir klar, dass Array() ein Array von Arrays ist - ich weiß gar nicht, ob man sowas instanzieren kann, weil ich glaub Array ist MustInherit. Also Array als solches gibt es garnet, sondern ein Array hat immer einen Datentyp.
    dim doubles(5) As Double wäre etwa ein Double-Array.
    Vielen dank für unnötige Antworten.

    Wenn sonst keiner mehr was weis, würde ich sagen ich frage mal in einem Forum bei dem es vernünftige Hilfe gibt.


    Hallo Marcus,
    dies Forum hat sich zu eine "Scheißhaufen" entwickelt. Moderatoren sollten doch etwas anders an die Sache rangehen.
    ich für meinen Teil werde mich hier verabschieden.
    Ihr könnt mein Accounct löschen.

    MfG
    Bernd
    oO

    Ich denke, genügend Leute versuch(t)en dir zu helfen.
    Nur ist dein Problem ein bisschen schwer zu verstehen!

    Und da offenbar alle Probleme haben, überhaupt zu verstehen was du meinst, könntest du dir ja auch an die eigene Nase fassen und dich fragen,
    ob es vielleicht an der Formulierung der Frage/des Problems liegen KÖNNTE!

    dies Forum hat sich zu eine "Scheißhaufen" entwickelt. Moderatoren sollten doch etwas anders an die Sache rangehen.


    Du als User auch.

    ich für meinen Teil werde mich hier verabschieden.


    Dann kann ich dir nur viel Spass und Glück wünschen.
    Ich sehe hier keinen Grund so auszurasten.
    Das ist meine Signatur und sie wird wunderbar sein!