Autor Beitrag
TranceTeddy
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 16:57 
Hey,

bin neu hier im Forum und ich hoffe ich bin hier richtig mit der Frage^^

Ich bin derzeit für die Schule an einem Programm was einen Analog-Digital Wandler dazu bringt Temperaturen zu messen (über LPT-Port)...

So wir sollen selbstverständlich auch die Möglichkeit einbauen die Liste der Messungen zu speichern.
An und für sich nicht das Problem... Nur ich will das so machen das man sich den Speicher-Ort auswählen kann und das man den Datei-Namen etwas anders festlegt als gewöhnlich...

Ich hätte da ein kleines Bild im Angebot was die Optionen zum Speichern zeigt (bislang nur labels, buttons und textboxen ohne jegliche wirkliche Funktion)...

user defined image

Wie ihr vielleicht seht ist es nicht so ganz wie die meisten das machen würden ;)

Nun stehe ich jedoch vor einem Problem... Wie bekomme ich das hin das ich dem SaveFileDialog beibringe das er nur Ordner auswählen kann und keine Dateien... So das man halt beim Button "Ändern" dann halt den Ordner festlegt und dann bei Datei-Name den Namen an sich...

Es würde mir denke ich mal völlig reichen wenn ich erfahre wie ich das mit den Ordnern mache... Das er nachher den Datei-Namen so erstellt nach dem Format was der Benutzer eingibt und das er da die Messungen speichert schaff ich denke ich mal selber...


Danke schonmal für die hoffentliche Hilfe ;)

Bye TranceTeddy


Zuletzt bearbeitet von TranceTeddy am Mo 11.02.08 17:05, insgesamt 1-mal bearbeitet
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 11.02.08 17:03 
Hallo,

schau dir am besten mal die FolderBrowserDialog-Klasse an.
TranceTeddy Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 17:07 
Hey super Danke ;)

Hatte schon nach nem SaveFolderDialog gesehen... aber sowas hatte ich nicht gefunden daher dachte ich geht das wohl auch über den SaveFileDialog und hab nicht weiter nach ganz anderen Namen gesucht ;)

Echt super ;) Danke!!!

Edit:

Ich wollte noch fragen ob man das irgendwie einstellen kann, das der Root-Ordner immer das Verzeichnis ist wo die .exe des Programms drin steckt, und wie man, egal wo der Mensch der das Programm benutzt es hin kopiert hat, das Verzeichnis was angezeigt wird dann halt der "saves" Ordner ist, wo die .exe Datei liegt....

Weil bei Root-Verzeichnis sind nur ein paar Ordner die schon vorgegeben sind und ich kann da keinen eingeben selber (am besten wäre halt irgendwie automatisch wo die .exe des Programms drin liegt) und man kann ja angeben welcher Ordner angezeigt werden soll wenn sich der Dialog öffnet, da wäre wunderbar wenn das halt auch irgendwie automatisch geht das er immer den Pfad zur .exe findet....
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 11.02.08 17:53 
user profile iconTranceTeddy hat folgendes geschrieben:
Ich wollte noch fragen ob man das irgendwie einstellen kann, das der Root-Ordner immer das Verzeichnis ist wo die .exe des Programms drin steckt, und wie man, egal wo der Mensch der das Programm benutzt es hin kopiert hat, das Verzeichnis was angezeigt wird dann halt der "saves" Ordner ist, wo die .exe Datei liegt....

Weil bei Root-Verzeichnis sind nur ein paar Ordner die schon vorgegeben sind und ich kann da keinen eingeben selber (am besten wäre halt irgendwie automatisch wo die .exe des Programms drin liegt) und man kann ja angeben welcher Ordner angezeigt werden soll wenn sich der Dialog öffnet, da wäre wunderbar wenn das halt auch irgendwie automatisch geht das er immer den Pfad zur .exe findet....

Bitte bemühe Dich um eine besser strukturierte Sprache (Satzbau, Subjekt-Prädikat-Objekt): so hat man es relativ schwer, zu verstehen, worauf Du hinaus willst.

Grundsätzlich: Benutze die SDK-Doku als wichtigstes Hilfsmittel.

Unter FolderBrowserDialog findest Du eine schöne Eigenschaft: "Ruft den von den Benutzern ausgewählten Pfad ab oder legt diesen fest."

Viele Informationen über die Anwendung findest Du in der Application-Klasse, u.a. Application.StartupPath.

Aber im Programmverzeichnis haben Daten grundsätzlich nichts zu suchen. (Unter Vista ist dieses Verzeichnis sowieso read-only.) Entweder Du siehst dafür einen speziellen Pfad \Programme\MyProgramm\Data vor verwendest den Standardpfad Environment.SpecialFolder.CommonApplicationData.

Gruß Jürgen
TranceTeddy Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 18:29 
Hey,

danke für die Antwort, sorry das ich manchmal ein wenig unverständlich schreibe, dies liegt jedoch daran, dass ich meistens das was ich schreiben möchte direkt im Kopf habe und mich daher beeile alles zu schreiben was ich im Kopf habe ;)

Ich versuche es jetzt mal ein wenig strukturierter.

Ich habe im Debug (und auch im Release-Ordner) ein Verzeichnis "saves" in dem die Files gespeichert werden sollen oder in Unterordnern dieses Verzeichnisses.

Da ich unterbinden möchte, dass jemand die Dateien wo anders speichert, wollte ich den Root-Ordner vordefinieren auf diesen "saves"-Ordner. Ich habe es nun mit dem Befehl

ausblenden C#-Quelltext
1:
2:
            this.fbdCSVSpeichern.RootFolder = Application.StartupPath;
            this.fbdCSVSpeichern.ShowDialog();


versucht.

Jedoch zeigt er mir dort die Fehlermeldung "Eine implizite Konvertierung vom Typ "string" in "System.Environment.SpecialFolder" ist nicht möglich." Ich habe mal nachgesehen ob ein Convert dazu vorhanden ist, jedoch ist dies nicht der Fall.

Meine Frage ist nun was ich dort falsch mache.

Im Endeffekt sollte so etwas dabei raus kommen:

ausblenden C#-Quelltext
1:
2:
3:
            this.fbdCSVSpeichern.RootFolder = Application.StartupPath + "\\saves";
            this.fbdCSVSpeichern.SelectedPath = Application.StartupPath + "\\saves";
            this.fbdCSVSpeichern.ShowDialog();


Der SelectedPath funktioniert. Jedoch kann man halt den Ordner noch weiter in die Übergeordneten Verzeichnisse legen.

Das Problem liegt also eigentlich nur noch beim RootFolder

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 11.02.08 18:38 
user profile iconTranceTeddy hat folgendes geschrieben:
Jedoch zeigt er mir dort die Fehlermeldung "Eine implizite Konvertierung vom Typ "string" in "System.Environment.SpecialFolder" ist nicht möglich." Ich habe mal nachgesehen ob ein Convert dazu vorhanden ist, jedoch ist dies nicht der Fall.
Hilfe zur SpecialFolder-Enumeration und dort die Remarks:
Zitat:
The GetFolderPath method uses these enumerated constants to designate the special folder path to retrieve.

Dabei verlinkt GetFolderPath auf die Environment.GetFolderPath-Methode.


//Edit: Allerdings ist Application.StartupPath ein String. Hast Du oben den falschen Code gepostet? Du solltest auch niemals Daten im Programmverzeichnis (oder unterhalb) ablegen, dafür gibt es die von Jürgen angesprochenen Ordner!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
TranceTeddy Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 20:19 
Ja eben weil Application.StartUpPath ein string ist und this.fbdCSVSpeichern.RootFolder halt ein ganz anderer ist es schwer das da rein zu schreiben.

Naja ich meine so schlimm kann es ja nicht sein das es im Root-Ordner steht, denn in so ziemlich sämtlichen Spielen ist es so das "Saves" in einem Ordner im Hauptverzeichnis gespeichert werden ;)

Naja ich werde es mal ein wenig abändern und anders versuchen.

Trotzdem danke für eure Hilfe!!!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 11.02.08 20:22 
Ach so, jetzt seh ich das. Allerdings wurde die Environment.SpecialFolder-Enumeration jetzt so oft erwähnt, dass Du selber drauf kommen könntest, wie's geht ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 12.02.08 11:29 
user profile iconTranceTeddy hat folgendes geschrieben:
Naja ich meine so schlimm kann es ja nicht sein das es im Root-Ordner steht, denn in so ziemlich sämtlichen Spielen ist es so das "Saves" in einem Ordner im Hauptverzeichnis gespeichert werden ;)
Dann hast du wohl noch nie ein Spiel mit diesem netten "Games for Windows"-Banner in den Händen gehalten ;) .

PS:
user profile iconTranceTeddy hat folgendes geschrieben:

ausblenden C#-Quelltext
1:
            this.fbdCSVSpeichern.SelectedPath = Application.StartupPath + "\\saves";					

Für so etwas sollte man besser Path.Combine einsetzen