hallo, ich habe ein kleines (konzeptionelles) Problem bei dem ich nicht richtig weiß ich ich es lösen soll: ich habe eine Form1 welche beim Programmstart geladen wird, dann habe ich noch eine klasse "einstellungen" und eine weitere klasse "hardware". Beim Programmstart (form1_load) lese ich den Ausführungspfad meines Programms. Anschließend prüfe ich in der klasse "Einstellungen" ob ich unter diesem Pfad eine Datei names settings.ini finde, ist sie nicht da wird sie mit defaultwerten erstellt, soweit kein Problem. Wenn ich nun aber in meiner Form1 auf einen Button klicke möchte ich, dass in der klasse "Hardware" eben meine Hardware initialisiert wird. Dazu benötige ich das ini-file und auch den Pfad zu selbigen. Jetzt mein Problem: Der filepath zum inifile sollte eignetlich (der Übersicht halber) in der klasse Einstellungen irgendwo statisch gespeichert werden, was aber nicht geht. Also habe ich 2 Möglichkeiten: 1. ich rufe jedes mal wenn ich in der klasse Hardware den filepath benötige die "Application.StartupPath" auf, das finde ich aber recht unschön da ich hier dann jedes mal dem string noch den Dateinamen anhängen muss. wenn sich der Dateiname ändert muss ich das an zig Stellen im code ändern! 2. ich speichere den filepath in der form1 und hole mir den string durch eine GetFilePath, finde ich aber genauso unschön da der Pfad zum settingfile nicht unbedingt in die Form1 gehört (hat ja nichts damit zu tun!?) Wie löst man soetwas im allgemeinen als alter Hase?
Definiere doch einfach eine Öffentliche Konstante mit dem dateinamen und einen Öffentlichen String mit dem Pfad des Programms in der Klasse Einstellungen. Den Pfad weist du in FormLoad zu. Dann erstellst du ein GetFilePath und returnst Pfad + "\\" + Dateiname
genau das funktioniert nicht :-/ Ich kann über set dann zwar den wert in der klasse Einstellungen setzten, aber sobald ich die klasse verlasse ist beim nächsten aufruf der wert wieder gelöscht. Was mache ich falsch dass der Pfad nicht gespeichert wird?
1 | namespace program |
2 | {
|
3 | class Einstellungen |
4 | {
|
5 | public string pathToSettingFile; |
6 | ...
|
7 | }
|
8 | }
|
Ein bisschen mehr Quellcode würde die Lösung des Problems sicherlich schneller vorantreiben.
Initialisiert du Sie neu oder Rufst du Sie nur erneut auf?
hab's gerade selbst hin gebracht. nachdem christopher geschrieben hatte dass das eignetlich doch geht, vermutete ich meinen Fehler in der Nennung von namespace und class, das Problem war aber die fehlende Bekanntmachung der classe Form1 in Einstellungen! Dennoch Danke!
für variabelen, die ich überall brauche, die sich nicht verändern etc(also Konfiguration u.Ä.) habe ich meist eine config klasse, in der alle variabelen public und static sind, dann kann man in allen anderen klassen einfach die variabele aufrufen: config.Version=102;
c#-Anfänger schrieb: > Jetzt mein Problem: > Der filepath zum inifile sollte eignetlich (der Übersicht halber) in der > klasse Einstellungen irgendwo statisch gespeichert werden, was aber > nicht geht. Also habe ich 2 Möglichkeiten: > > 1. ich rufe jedes mal wenn ich in der klasse Hardware den filepath > benötige die "Application.StartupPath" auf, das finde ich aber recht > unschön da ich hier dann jedes mal dem string noch den Dateinamen > anhängen muss. wenn sich der Dateiname ändert muss ich das an zig > Stellen im code ändern! 1. Welches OS lässt denn Schreibzugriffe in diesem Verzeichnis zu...oder muss die Anwendung zwingend mit Administratorrechten laufen? http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx 2. Es dürfen auch die ApplicationSettings verwendet werden, die fast alles automatisch übernehmen (Solution -> Project Name -> Properties -> Settings) http://msdn.microsoft.com/de-de/library/system.configuration.applicationsettingsbase(v=vs.80).aspx
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.