Oh ja, natürlich. Auch wenn das Problem letztendlich eine Eigenproduktion war. Vielleicht dient es ja als Lehrbeispiel für Anfänger.
Das Problem lag hier, im Nachhinein wohl extremst ungeschickt gelöst.
public IList<t_members> GetAllMembers()
{
IList<t_members> tempMembersList = _membersRepository.GetAll();
//foreach (t_members m in tempMembersList)
//{
// m.IsTrial = true && GetTrialmemberById(m.P_member_ID) != null;
// if (GetTrialmemberById(m.P_member_ID) != null)
// m.Notes = GetTrialmemberById(m.P_member_ID).note;
//}
return tempMembersList;
}
Genauer gesagt war es die foreach Schleife.
Vielen Dank für die Hilfe, der Leistungstest war mir neu.
Dankeschön!!!
Ich hab's gefunden.
Anbei ein Screenshot der Abfrage. Das sieht alles ziemlich zeitintensiv aus.
Jemand ne Idee?
Abt hast du ein besseres Beispiel dafür?
Liebe Grüße
Akhanto
Hab zum Test einen Button eingefügt, mit dem ich die IList neu lade und dann das Grid, dauert genau so lange.
verwendetes Datenbanksystem: EF 6 + MySQL
Hi,
der Versuch, ca. 120 Datensätze mithilfe von EF aus einer MySQL Datenbank abzufragen war leider sehr frustrierend. Es dauert über 15 Sekunden, bis die Abfrage fertig ist.
Ist das ein generelles Problem dieser Kombination oder liegt es eher an der Abfrage?
Ich habe mich an dieses Tutorial gehalten, um das Programm zu erstellen.
Daher dieser Code zur Abfrage:
public virtual IList<T> GetAll(params Expression<Func< T, object >>[] navigationProperties)
{
List<T> list;
using (var context = new ClanDBEntities(Helper.ConnectionStringBuilder.DefaultBuilder()))
{
IQueryable<T> dbQuery = context.Set<T>();
//Apply eager loading
foreach (Expression<Func<T, object>> navigationProperty in navigationProperties)
dbQuery = dbQuery.Include<T, object>(navigationProperty);
list = dbQuery
.AsNoTracking()
.ToList<T>();
}
return list;
}
Die Zeile im Code, die dann hängt ist diese hier:
IList<t_members> memList = businessLayer.GetAllMembers();
Vielen dank schon mal,
Akhanto
Vielen Dank @Abt. Ich denke, das ist genau, was ich suche!
@Lennart: Die Spotify API wollte ich nicht nutzen, weil ich das Programm ja vielleicht auch mal für andere Anwendungen nutzen will...
Der "Umweg" über die Simulation von Tasten war mir zwar von vorn herein irgendwie nicht ganz recht, ich hab es aber dennoch probiert und bin gescheitert.
Ein einfaches Windows Forms Testprogramm mit einem Button und einem
SendKeys.SendWait("MediaPlayPause");
reagiert nicht.
Auch ein, wie es im Beispiel der MSDN Doku stand:
SendKeys.SendWait("{MediaPlayPause}");
läuft nicht.
Ich bin mir aber auch irgendwie sicher, dass es da etwas "direkteres" und systemnäheres gibt, ich finde es schlicht und einfach nicht...
Trotzdem Danke für den Tip und für alle weiteren Hilfen!
Hi,
ich suche momentan vergeblich nach einer Möglichkeit einen Play/Pause/Stopp/Weiter Befehl an ein Musikprogramm zu senden.
Hintergrund ist, dass es bei Spotify nicht möglich ist, einen Autoplay einzustellen und ich würde es gerne morgens als eine Art Wecker nutzen.
Ich möchte einfach ein kleines Programm schreiben, dass bei Aufruf ein Play sendet (wie, wenn man auf der Tastatur auf den Play Knopf drückt).
Meine Suche nach Begriffen, wie "Mediensteuerung" oder "Musik steuern" haben lediglich auf DLNA, abspielen von MP3s oder die Steuerung vom Windows Media Player hingewiesen, das hilft aber eben nicht... Wenn es möglich ist, mit einer Tastatur zu steuern, muss es doch mit C#/API möglich sein.
Vielen Dank
Akhanto
Danke für die Ratschläge, ich hab das jetzt soweit verstanden.
Die Probleme, die noch aufgetreten sind, werde ich in anderen Themen erfragen bzw. mich eben erstmal selber schlau machen.
Hi,
danke für die Erklärung irgendwie gewöhnungsbedürftig, evtl stelle ich mich auch etwas doof an..
Gibt es eine kleine Übersicht, wie man bestimmte Beziehungen korrekt in EF Code abbildet? Ich kenne die GetStarted Seite von Microsoft, aber da habe ich sowas nicht gefunden. Da ich im Urlaub bin, habe ich nur gedrosseltes Handyinternet, was das suchen etwas schwer macht.
Falls da jemand was zur Hand hat, wäre das super, ansonsten suche ich mir selber was, wenn ich wieder zu Hause bin.
Vielen Dank
Akhanto
Hi,
erstmal vielen Dank für die Hilfe.
Wahrscheinlich habe ich einen weiteren Denkfehler, aber ich verstehe deine Darstellung der Beziehungen nicht so ganz.
Es ist doch eigentlich so, dass
ein Benutzer viele Rechte hat.
ein Recht nicht direkt Benutzern zugordnet wird (oder?)
eine Gruppe viele Rechte hat.
Ein Recht auch nicht direkt Gruppen zugeordnet wird.
So wie das in meiner Logik aussieht, sind das doch 1:n Beziehungen oder nicht?
LG
Akhanto
Ich mache Code First und habe mangels Erfahrung erwartet, dass man das aus dem Post erschließen kann, sry.
Das Modell ist wie gesagt erstmal nur Spielwiese ohne Achten auf irgendwelche Sicherheitsregeln oder so, deshalb mache ich mir auch keine Mühe die Passwörter zu verschlüsseln und so weiter.
Ich benutze Visual Studio 2012 Ultimate, das Diagramm habe ich mir aus dem SQL Explorer erstellen lassen.
Dass die Logik soweit richtig sein sollte, ist ja schonmal super, aber wo liegt dann der Fehler? Denn so wie das jetzt ist, kann das ja nicht funktionieren oder?
Mir ist aufgefallen, dass es Bei Benutzer und Recht ähnlich ist. Vom Diagramm her scheint er davon aus zu gehen, dass ein Recht einen Benutzer enthält, obwohl ein Benutzer ja eigentlich eine Liste von Rechten bekommen soll.
Irgendwo muss dort ein logischer Fehler sein, der das ganze nach links dreht..
Vielen Dank
verwendetes Datenbanksystem: <SQLEXPRESS / EntityFramework>
Hallo,
ich versuche mich momentan an EF. Der erste Einstieg ist relativ leicht gefallen (die ersten CRUD Experimente usw.)
Als Spielplatz habe ich mir eine simple Rechteverwaltung gebastelt (das Modell davon).
Es beinhaltet Recht, Gruppe und Benutzer.
Das Recht hat eine ID, einen Namen und eine Kategorie.
Die Gruppe hat eine ID, einen Namen, eine andere Gruppe (vererbung) und eine ICollection, die Recht(e) beinhaltet.
Der Benutzer hat eine ID, einen Benutzernamen, ein Passwort, den LetztenLogin (DateTime), eine ICollection Gruppen und eine ICollection Rechte.
Recht:
public int RightId { get; set; }
public string Name { get; set; }
public string Category { get; set; }
Gruppe:
public int GroupId { get; set; }
public string Name { get; set; }
public virtual Group Inherits { get; set; }
public virtual ICollection<Right> Right { get; set; }
Benutzer:
public int UserId { get; set; }
public string Username{ get; set; }
public string Password{ get; set; }
public DateTime LastLogin{ get; set; }
public virtual ICollection<Group> Groups{ get; set; }
public virtual ICollection<Right> Rights{ get; set; }
Wenn ich das so erstelle, erhalte ich das was im Anhang zu sehen ist. Mir kommt es so vor, als wäre dort die Beziehung von Groups und Rights "falsch rum". Denn ich möchte ja eigentlich beim erstellen einer Gruppe einstellen, welche Rechte sie hat und nicht beim Erstellen eines Rechts einstellen, zu welchen Gruppen es gehört.
Habe ich einen Denkfehler oder einen Fehler im Modell?
Noch eine kurze Frage nebenbei: Warum ist es eigentlich nötig, alle Properties wo andere Objekte enthalten sind, als virtual zu deklarieren? Ich habe das aus dem hier so übernommen, aber keine Erklärung gefunden.
Vielen Dank
Akhanto
Guten Tag,
ich habe mich vor ein paar Tagen mit dem MVVM Modell beschäftigt, leider war das ganze nur in Tutorialform zum nachbauen. Dadurch wurde das natürlich nur sehr oberflächlich behandelt und hat bei mir einige Fragen zum Design aufgeworfen.
Das Prinzip von MVVM ist ja, wenn ich es richtig verstanden habe, Code und Design bzw. Anzeige und Verarbeitung voneinander zu trennen.
Wie sollte ich nun aber vorgehen, wenn ich z.B. eine Updaterfunktion implementieren möchte. Diese muss doch ins MainWindow oder in irgendein anderes Fenster, damit entsprechende Methoden bei Aufruf und möglichst VOR Durchführung von anderen Aufgaben ausgeführt werden.
Wie implementiert man Konfigurationsmöglichkeiten? Muss man hierfür auch ein Objektmodell und entsprechende Viewmodels etc. aufbauen?
Wie gehe ich vor, wenn eine Checkbox an bestimmte Felder (z.B. Bools) "gebunden" ist, wenn man keine Ereignisbehandlungen benutzen soll/darf/will.
Und abschließend: gibt es eine gute, detailliertere Einführung in dieses Thema im Internet zu finden? Sicher.. Es gibt einige, aber vielleicht gibt es ja die eine oder andere empfehlenswerte.
So das waren jetzt ganz schön viele Fragen, ich danke schonmal im voraus.
Akhanto
verwendetes Datenbanksystem: Access
Hi,
ich versuche momentan über einen von VS generierten TableAdapter einen Insertbefehl auszuführen (welcher ja auch generiert wird).
Der Aufruf sieht so aus:
dokumenteTabDataSet1tblBuchTableAdapter.Insert(tbTitel.Text, tbAutor.Text, tbBemerkungen.Text, cbDokTyp.SelectedValue, cbStandort.SelectedValue, cBQMHGliederung.SelectedValue, LstFreieNummer[0], cbAktuell.IsChecked, cbFreigegeben.IsChecked, tbVersion.Text, tbID.Text, tbQMTyp.Text, DPFreigabe.SelectedDate, tbPfad.Text);
wenn ich das ganze dann ausführen lasse, bekomme ich den im Titel stehenden Fehler: > Fehlermeldung:
Die Methode oder der Vorgang sind nicht implementiert
Daraufhin bin ich dann sicher gegangen, dass diese implementiert sind und wie in einer msdn hilfe stand, die GenerateDBDirectMethods Property auf True steht. Beides ist der Fall.
Der von VS generierte InsertCommand sieht so aus:
INSERT INTO `tblBuch` (`strBuTitel`, `strBuAutor`, `strBuBemerkungen`, `lngBuDokumenttypFK`, `lngBuStandortFK`, `lngBuQMHGliederungFK`, `lngBuDokumentnummer`, `ysnBuAktuell`, `ysnBuFreigegeben`, `strBuVersion`, `strBuID`, `strBuQMTyp`, `dtmBuFreigabe`, `strBuDateipfad`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hat hier jemand einen Tipp für mich? Die direkte Suche nach der Fehlermeldung hat mich leider kein Stück weiter gebracht..
vielen Dank
Akhanto
PS: Der Debugger zeigt mir keine Fehler an und mir wurde alles genau so vom IntelliSense vorgeschlagen!
Ja.. Warum so kompliziert? Keine Ahnung!
Das wars jedenfalls, jetzt geht es!! Vielen Vielen Dank.
Wenn mir jetzt noch jemand verrät wie ich auf auf eine andere Spalte des markierten Werts zugreifen kann, bin ich komplett glücklich!
In der Tabelle sind nämlich einmal eine ID (Primary Key) und dann unter anderen eben noch der echte Name. Angezeigt wird natürlich der Name, ich brauche jedoch zur weiteren Verarbeitung die ID. Mit SelectedValue bekomme ich ja nur den Namen, was benutze ich stattdessen?
//Edit: Problem gelöst.. Man muss einfach den DisplayMemberPath anpassen!
vielen Dank
Akhanto
Ich wusste doch ich hab was vergessen..
<Window.Resources>
<ObjectDataProvider
x:Key="TypProvider"
MethodName="DataSetFüllenDokTypMDB"
ObjectType="{x:Type local:DataSets}"/>
</Window.Resources>
Das Problem mit der fehlenden Anzeige hat sich gelöst.. ich habe mich an das gehalten und jetzt gehts.
Wenn mir jetzt noch jemand verrät wie ich auf auf eine andere Spalte des markierten Werts zugreifen kann, bin ich komplett glücklich!
In der Tabelle sind nämlich einmal eine ID (Primary Key) und dann unter anderen eben noch der echte Name. Angezeigt wird natürlich der Name, ich brauche jedoch zur weiteren Verarbeitung die ID. Mit SelectedValue bekomme ich ja nur den Namen, was benutze ich stattdessen?
Die Frage habe ich in diesem Beitrag bereits gestellt, da sich der aber eigentlich auch was anderes bezieht, habe ich das hier nochmal gestellt.
//Edit: Problem gelöst.. Man muss einfach den DisplayMemberPath anpassen!
vielen Dank
Akhanto
Hallo zusammen,
ich versuche momentan verzweifelt mich in WPF und die Datenbindung einzuarbeiten.
Ziel ist es eine Combobox an den Inhalt eines DataSets zu binden. Obwohl ich keine Fehlermeldung bekomme, wird die Box leider nicht gefüllt.
Als Orientierung habe ich mich an diese Anleitung gehalten: Hier
Die Methode für das DataSet sieht so aus:
public static DataSet DataSetFüllenDokTypMDB()
{
OleDbConnection con = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Users\Tim\Desktop\DokumenteTab.mdb");
string cmd = "SELECT tblBuchDokumenttyp.lngBuchDokumenttypPK, tblBuchDokumenttyp.strDtName AS Dt, tblBuchDokumenttyp.strDtKürzel, tblBuchDokumenttyp.strDtQMTyp, [strDtQMTyp] & \" - \" & [strDtName] AS Dt2 FROM tblBuchDokumenttyp ORDER BY [strDtQMTyp]";
OleDbCommand comm = new OleDbCommand(cmd, con);
OleDbDataAdapter adapter = new OleDbDataAdapter(comm);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
Der Code der Box:
<ComboBox DataContext="{StaticResource TypProvider}" ItemsSource="{Binding tblBuchDokumenttyp}" Grid.Column="1" Height="23" HorizontalAlignment="Left" Name="comboBox1" VerticalAlignment="Top" Width="120"/>
Kann mir jemand einen Tip geben, das besser zu machen?
vielen Dank
Akhanto
Guter Hinweis!
Der Fehler an sich ist gelöst.. es war ein fehlender/defekter Treiber für die aktuellen Accessdatenbanken.
Leider kriege ich es noch nicht hin die Combobox mit einem DataSet zu verbinden, aber das ist wohl ein anderes/neues Thema.
vielen Dank euch!
Akhanto
Das mit dem neu bauen war ein guter Hinweis. Ich bekomme jetzt jedenfalls einen richtigen Fehler im Debugger angezeigt, der mir jedoch kein Stück weiterhilft:
Fehlermeldung:
Exception has been thrown by the target of an invocation
Alles befindet sich im gleichen Projekt.
vielen Dank
Akhanto
Danke die beiden Themen sind schonmal sehr vielversprechend!
Ich suche beides. Einmal ein Nachschlagwerk mit wichtigen Dingen über Postgres und dann ein Buch über generelle Sachen in Sachen Datenbankarchitektur sowie Programmierung von mehrschichtigen Programmen.
Hi,
ich bin an dem Versuch, eine Combobox an ein Dataset zu binden gescheitert.
Ich habe mich an dieses tutorial gehalten.
Der XAML Code sieht so aus:
<Window x:Class="Dateiverwaltung.NeueDateien"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Dateiverwaltung"
Title="NeueDateien" Height="388" Width="851">
<Window.Resources>
<ObjectDataProvider
x:Key="TypProvider"
ObjectType="{x:Type local:DataSets}"
MethodName="DataSetFüllen"/>
</Window.Resources>
Beim ObjectType zeigt er mir: > Fehlermeldung:
Type 'local:DataSets' was not found
an.
Was mache ich falsch? ich habe nirgends einen ähnlichen Fehler gefunden und zerbreche mir seit gestern den Kopf..
vielen Dank
Akhanto
verwendetes Datenbanksystem: Postgres
Hallo,
ich suche Literatur (auch online) zu datenbankunabhängiger mehrschichtiger Programmarchitektur und zu Datenbankarchitektur.Ich suche schon ewig im Internet und in Buchhandlungen, habe jedoch nichts gutes gefunden. Kann mir hier jemand gute, tiefer gehende Sachen zu dem Thema und zu Sicherheit und Mehranwenderfreundlichkeit empfehlen?
Vielen Dank
Akhanto
Hi,
in einer Anwendung lasse ich in einem Thread Dateien kopieren. Immer wenn eine Datei kopiert wurde, wird ein Event gefeuert. Im Programm fange ich die ab und will damit einen Fortschrittsbalken aktualisieren (Zugriff auf zwei int Properties in der kopierenden Klasse).
In WPF ist es ja nun so, dass man Steuerelemente nur aus dem gleichen Thread heraus verändern kann. Da ich jedoch das Ereignis im MainWindow abfange und das Steuerelement eigentlich auch dort erstellt wird, erschließt sich mir mein folgendes Problem nicht.
Immer wenn er eine Datei fertig hat (also quasi sofort nach dem Start), wirft er eine Exception: > Fehlermeldung:
Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da sich das Objekt im Besitz eines anderen Threads befindet.
kopierschleife:
foreach (FileInfo fi in Dateien)
{
if (!File.Exists(strPfad + strOrdnername + fi.Name))
{
intZahlDateienAktuell++;
intZahlDateienRest--;
intProzent = intZahlDateienAktuell / intZahlDateien * 100;
System.IO.File.Copy((Convert.ToString(fi.FullName)), strPfad + strOrdnername + fi.Name, true);
OnDateiKopiert(EventArgs.Empty);
}
}
Ereignisbehandlung:
private void objDA_DateiKopiert(Object objSender, EventArgs e)
{
progBarFortschritt.Value = objDA.propProzent;
}
Ich habe irgendwie das Gefühl, dass ich hier nen logischen Denkfehler habe, aber ich komme einfach nicht dahinter.
vielen Dank
Akhanto
Hallo,
ich möchte für mein Programm eine Fortschrittsleiste einbauen, die anzeigt wie weit es mit dem Kopieren von bestimmten Dateien ist. Hierfür habe ich in einer Kopieren-Klasse zwei Eigenschaften (int ZahlDateienGesamt und int ZahlDateienRest) erstellt und wollte dann im Hauptprogramm den Prozentwert ausrechnen und in den progrBar.Value übertragen. Bei meiner ersten Lösung hat er die GUI aktualisierung erst vorgenommen, als er komplett fertig war. Dann habe ich die Methode zum Kopieren in einen Hintergrundthread geschoben und versucht über eine while(Rest !=0) Schleife den Balken zu aktualisieren, jedoch passiert in diesem Fall gar nichts. Ich sitze mittlerweile den ganzen Tag an dem Problem und weder Google noch Bücher noch Bekannte konnten da sinnvoll weiterhelfen.
{
objDA = new DateiAktionen(e.Drive);
objDA.propStrPfad = strPfad;
ThreadStart ThrStKopieren = new ThreadStart(objDA.Kopieren);
Thread ThrKopieren = new Thread(ThrStKopieren);
ThrKopieren.IsBackground = true;
ThrKopieren.Start();
while (objDA.propZahlDateienRest != 0)
{
progBarFortschritt.Value = objDA.propProzent;
}
}
Das ist übrigens die Methode zum Kopieren:
public void Kopieren()
{
try
{
strOrdnername = "\\" + Microsoft.VisualBasic.Interaction.InputBox("USB-Stick gefunden! Bitte Ordnername eingeben!", "Ordnername") + "\\";
if (!Directory.Exists(strPfad + strOrdnername))
Directory.CreateDirectory(strPfad + strOrdnername);
if (boolDateienVorhanden)
{
foreach (FileInfo fi in Dateien)
{
if(! File.Exists(strPfad + strOrdnername + fi.Name))
{
intZahlDateienAktuell++;
intZahlDateienRest--;
intProzent = intZahlDateienAktuell / intZahlDateien * 100;
System.IO.File.Copy((Convert.ToString(fi.FullName)), strPfad + strOrdnername + fi.Name, true);
}
}
}
else
System.Windows.MessageBox.Show("keine Dateien");
}
catch (Exception x)
{
System.Windows.MessageBox.Show(x.Message);
}
}
Hat hier jemand einen Tipp?
vielen dank
Akhanto
Stimmt. Ich werde mir das nochmal genauer ansehen!
Danke soweit
Akhanto
Wie geschrieben funktioniert die Erkennung mittlerweile. Meine Version ist auch ganz gut glaube ich. Mein Problem ist leider jedoch immernoch, dass es nötig wäre, dass der Laufwerkbuchstabe von dem gerade angesteckten Gerät übermittelt wird. mit der DriveInfo Klasse hilft mir hier jedoch nur begrenzt, da ich entweder speziell ein Laufwerk abfragen kann oder alle, aber nicht das, was zuletzt geändert bzw. hinzugefügt wurde.
Wird der Laufwerksbuchstabe bei Devicechange mit übermittelt oder habt ihr nen andern Ansatz für mich?
Danke
Akhanto
Hi,
Neu hier und schon ne Frage =)
Ich suche seit gestern nach einer Möglichkeit einen angesteckten USB Stick zu erkennen und darauf zu reagieren (in meinem Fall bestimmte Daten automatisch runter kopieren). WndProc gibt es ja in WPF nicht.
Bei meiner Suche habe ich das, sowie das
beides kombiniert sieht das bei mir so aus:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Interop;
namespace USB_Stick
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
USBerkennung objCD = new USBerkennung();
const int WM_DEVICECHANGE = 0x219;
int intUSBCount;
public MainWindow()
{
InitializeComponent();
CheckDrives();
}
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
source.AddHook(WndProc);
}
private void CheckDrives()
{
intUSBCount = 0;
foreach (System.IO.DriveInfo d in System.IO.DriveInfo.GetDrives())
{
if (d.DriveType == System.IO.DriveType.Removable)
intUSBCount++;
}
}
IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_DEVICECHANGE)
{
int intOldUSBCount = intUSBCount;
CheckDrives();
if (intUSBCount > intOldUSBCount)
tbStatus.Text = "Gerät gefunden";
if (intUSBCount < intOldUSBCount)
tbStatus.Text = "Gerät entfernt";
}
return IntPtr.Zero;
}
}
}
Wenn ein Gerät eingesteckt wurde, soll in eine Textbox eine entsprechende Meldung geschrieben werden. Leider passiert das nicht. Kann mir da jemand weiter helfen? Eine Fehlermeldung wird mir nicht angezeigt. Ist eventuell der msg Code falsch? Der bezieht sich ja auf WndProc.
EDIT: Nach Zugabe einer weiteren Textbox, die die Anzahl der Geräte anzeigt funktioniert nun das ganze Programm! Problem gelöst. Nun stehe ich jedoch vor einem anderen Problem: Wie erkenne ich Name und Pfad des Geräts? (ich möchte ja Dateien kopieren)
vielen Dank
Akhanto