WinFuture-Forum.de: C# - Ausgabe Und Pfad - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

C# - Ausgabe Und Pfad


#1 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 09. Oktober 2006 - 15:22

Tach zusammen,


ich hab 2 Fragen: (bin recht neu in C#)

1.) hab nen FolderBrowserDialog und will den Pfad dann weiterverarbeiten (alle Daten in dem Verzeichnis und dessen Unterordner woanders hin kopieren). Blöd ist nur, dass ich mit

folderBrowserDialog1.SelectedPath


leider nur irgendwas mit C:\Verz1\Verz2 und soweiter bekomme. Aber wenn ich das richtig sehe, dann benötige ich aber doch etwas dergestaltiges: C:\\Verz1\\Verz2. Also doppelte slashes !! oder nicht ?
Nun die Frage: sofern ich das richtig sehe, wie besorge ich mir jetzt einen funktionierenden Pfad ? Also irgendwas, was das (Windosen)System dann auch versteht. (Jetzt noch ne String Manipulation durchzuführen, kanns ja dann wohl nicht sein, oder ?)

2.) Wie kann ich, wenn ich ein Windows Application Project (was das nun eigentlich genau heisst wird ich auch mal gern wissen, hab zumindest das Paket System.Windows.Forms eingebunden) starte, dann kann ich nix auf die Konsole ausgeben. Wie soll ich dann aber mein Programm debuggen und Fehler finden. (Hab als Notlösungen ne Textbox benutzt, die is aber einzeilig und das ist ganz schön bescheiden, um sich die Ausgaben anzuschauen).

Gruss,
plichel
0

Anzeige



#2 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 09. Oktober 2006 - 15:40

Hallo und Willkommen im Forum!

1. Da das Backslash ein Sondercharakter ist, muss man ein weiteres Backslash davor setzen, sowas nennt man im Fachjargon Escapen. Wenn es mit einem Backslash nicht funktionieren sollte, dann einfach durch String.Replace() ersetzen.

2. Eine Windows-Applikation ist - wie der Name schon sagt - keine Konsolenapplikation :) Damit machst du halt deine Klicki-Bunti-Fenster.

Entweder du stellst in den Projektoptionen auf Konsolenanwendung um (kannst dann wieder deine Konsole sehen) oder du startest die Anwendung einfach im Debug-Modus (ich glaube F5 war das).
0

#3 Mitglied ist offline   mibtng 

  • Gruppe: aktive Mitglieder
  • Beiträge: 298
  • Beigetreten: 03. Juni 05
  • Reputation: 0

geschrieben 09. Oktober 2006 - 15:46

Also die Angabe mit den Doppel-Slashs ist nur, weil der Backslash in C#-Strings ein Escape-Zeichen einleiten kann (ka ob ich das nun richtig ausgedrückt habe), also eine Art Sonderzeichen...

z.B. ist \t ein Tabulator, \n eine neue Zeile...

Damit der Compiler erkennen kann, ob du nun ein solches Zeichen meinst oder doch einen Backslash, musst du für einen Backslash eben zwei direkt hintereinander schreiben.

Da das v.a. bei Pfad-Angaben nervend ist kann man dieses auch explizit verhinden:
"C:\\Ich\\Bin\\Ein\\Pfad"
könnte man auch
@"C:\Ich\Bin\Ein\Pfad"
schreiben. Das @-Zeichen vor dem String weist den Compiler darauf hin, dass jeder Backslash als Backslash interpretiert werden soll und keine Escape-Zeichen einleiten.

Intern wird der Doppel-Backslash als einzelner Slash gepeichert, deshalb ist deine Ausgabe für den Pfad absolut korrekt.
Du kannst ja mal nen Test machen:
MessageBox.Show("\\".Length);
Obwohl der String auf den ersten Blick 2 Zeichen lang ist, lautet das Resultat 1 (hoffentlich ^^)
0

#4 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 09. Oktober 2006 - 15:56

@witi:
kann ich denn einfach von fenster auf konsole umschalten. Ich könnte mir vorstellen, dass es da probleme gibt, da mit konsole ja dann die formulare wie buttons usw. nicht dargestellt werden können. Muss ich da ne alternativen code angeben oder wie soll das funktionieren.

Ich benutz übrigens grad SharpDevelop und da wird mit F5 kompiliert und ausgeführt.

@mibtng, danke, das mit dem "@" sieht danach aus was ich brauch...

Dieser Beitrag wurde von plichel bearbeitet: 09. Oktober 2006 - 16:05

0

#5 Mitglied ist offline   mibtng 

  • Gruppe: aktive Mitglieder
  • Beiträge: 298
  • Beigetreten: 03. Juni 05
  • Reputation: 0

geschrieben 09. Oktober 2006 - 16:06

Beitrag anzeigenZitat (plichel: 09.10.2006, 16:56)

d.h. also, die Funktionen OpenFile, FolderBrowser, usw. liefern mir einen Pfad der streng genommmen so nicht verarbeitet werden kann ?

[ ] Du hast es verstanden
[x] Du hast es nicht verstanden

Wenn du folgendes hast:
string test = "Windows XP installiert sich normalerweise nach C:\\Windows";

und diesen in einer Konsolen-Anwendung anzeigen lässt:
Console.WriteLine(test)

Dann ist die Ausgabe:

Zitat

Windows XP installiert sich normalerweise nach C:\Windows


Console.WriteLine("Ich\n\liebe\nneue\nZeilen");
liefert:

Zitat

Ich
liebe
neue
Zeilen


Console.WriteLine(@"Ich\n\liebe\nneue\nZeilen"); // Escape-Zeichen unterdrücken...
liefert:

Zitat

Ich\nliebe\nneue\nZeilen


Der Doppel-Slash ist nur auf Quellcode-Basis ein Doppelslash, bei der Ausgabe erscheint er immer als Einfach-Slash...

Edit:
Ob du
string s = "C:\\Windows";
oder
string s = @"C:\Windows";
schreibst, ist egal, es ist exakt das selbe

Dieser Beitrag wurde von mibtng bearbeitet: 09. Oktober 2006 - 16:07

0

#6 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 09. Oktober 2006 - 16:25

nur zur entwirrung, hatt grad was gepostet, was ich dann aber wieder weggenommen hab, weil ich es mir noch mal kurz durchdacht hab... also nicht das jemand denkt, mibtng will mich verleumden oder so, weit gefehlt !
muss aber noch dazu sagen, dass ich es editiert hab, bevor mibtng seine antwort abgeschickt hat !
0

#7 Mitglied ist offline   mibtng 

  • Gruppe: aktive Mitglieder
  • Beiträge: 298
  • Beigetreten: 03. Juni 05
  • Reputation: 0

geschrieben 09. Oktober 2006 - 16:35

Yep, wobei ich dein Edit erst sah nachdem ich gepostet hatte :-)

Ich hoffe du hast es nun verstanden mit dem (Doppel)Backslash... auch wenn du im Quellcode das so eingibst, Programm-intern ist das nur ein Backslash. Und die Angaben "C:\\Windows" und @"C:\Windows" sind absolut identisch. "\\" ist ein Zeichen, genauso wie "a", "b", "c" usw...
0

#8 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 09. Oktober 2006 - 16:36

Zitat

kann ich denn einfach von fenster auf konsole umschalten. Ich könnte mir vorstellen, dass es da probleme gibt, da mit konsole ja dann die formulare wie buttons usw. nicht dargestellt werden können. Muss ich da ne alternativen code angeben oder wie soll das funktionieren.

Das macht nichts. Es wird nur zusätzlich zum normalen Fenster ein Konsolenfenster geöffnet.

Wo du den Debug-Modus startest musst du in der Hilfe nachgucken. Ich arbeite in der Regel mit Visual Studio.

Zitat

nur zur entwirrung, hatt grad was gepostet, was ich dann aber wieder weggenommen hab, weil ich es mir noch mal kurz durchdacht hab... also nicht das jemand denkt, mibtng will mich verleumden oder so, weit gefehlt !
muss aber noch dazu sagen, dass ich es editiert hab, bevor mibtng seine antwort abgeschickt hat !

Kein Problem, wir sehen ja dass du deinen Beitrag editiert hast.
0

#9 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 09. Oktober 2006 - 17:30

nochmal danke, für die diversen hinweise, bin immerhin nun zu einem funktionierenden und mit windos ausführbaren Programm gelangt, allerdings hab ich jetzt folgendes problem, wenn meine kompilierte exe auf einem anderen system ausführen will, kommt immer die meldung: (zumindest scheint es so, das das problem nur auftaucht, wenn ich das programm woanders asuführen will)

Application attempted to perform an operation not allowed by the security policy. To grant this application the reguired permission, contact your system administrator, or use the MS .net Framework Configuration Tool.
...
...

Unter Details ist dann noch zu lesen:
System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=f22e234234e122' failed.

Was kann ich tun ? Hab mal das Config Tool gestartet, weiss damit aber nix weiter anzufangen. Der Fehler tritt in dem Moment auf, wenn ich mit FolderBrowserDialog ich ein Verzeichnis spezifizieren will.


Was mich auch wundert, ist dass es offenbar auf meinem System funktioniert, also da wo ich das Programm geschrieben hab, aber sonst nicht.



plichel

Dieser Beitrag wurde von plichel bearbeitet: 09. Oktober 2006 - 17:32

0

#10 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 10. Oktober 2006 - 09:49

nochmal kurz 2 sachen:

1.) das problem mit der Berechtigung hat sich geklärt. Es trat, wie ich nun mitbekommen hab, nur auf, wenn ich das Programm übers Netzwerk von einem anderen Rechner/Speicherort starten wollte.

2.) finde es trotzdem blöd, dass mir FolderBrowser den Pfad so liefert, dass ich den noch bearbeiten muss (also slashes hinzufüge bzw. das @). Denn wenn ich mit FolderBrowser einen Pfad mir hole dann will ich den ja in der Regel auch benutzen: also ausgeben oder irgendwas damit machen. Könnt ihr mir denn Fälle nennen, wo ich die Ausgabe von FolderBrowser dann so direkt benutze ?
0

#11 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 10. Oktober 2006 - 09:56

1. Das mit den Rechten ist schön in der Doku/API erklärt. Hättest du also eigentlich sehen müssen :)

2. z.B. unter anderen Betriebssystemen, wie Linux, wo ein Pfad so aussieht: /path/to/bin
0

#12 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 10. Oktober 2006 - 10:07

echt, es gibt leute die .net und vb/c# unter linux benutzen ? wusste gar nicht, dass das überhaupt geht...
0

#13 Mitglied ist offline   TiKu 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 10. Oktober 06
  • Reputation: 0
  • Wohnort:Dresden
  • Interessen:Softwareentwicklung

geschrieben 10. Oktober 2006 - 10:23

Beitrag anzeigenZitat (plichel: 10.10.2006, 10:49)

2.) finde es trotzdem blöd, dass mir FolderBrowser den Pfad so liefert, dass ich den noch bearbeiten muss (also slashes hinzufüge bzw. das @). Denn wenn ich mit FolderBrowser einen Pfad mir hole dann will ich den ja in der Regel auch benutzen: also ausgeben oder irgendwas damit machen. Könnt ihr mir denn Fälle nennen, wo ich die Ausgabe von FolderBrowser dann so direkt benutze ?
Narf! Du hast es noch immer nicht kapiert! Du kannst Die Ausgabe von FolderBrowser direkt nutzen! Das mit dem @ und den \\ ist nur für den Compiler interessant!

Beitrag anzeigenZitat (plichel: 10.10.2006, 11:07)

echt, es gibt leute die .net und vb/c# unter linux benutzen ? wusste gar nicht, dass das überhaupt geht...
Dafür gibts Mono.
0

#14 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 10. Oktober 2006 - 11:17

Zitat

Narf! Du hast es noch immer nicht kapiert! Du kannst Die Ausgabe von FolderBrowser direkt nutzen! Das mit dem @ und den \\ ist nur für den Compiler interessant!


der compiler spielt für mich in diesem zusammenhang meist eine wesentliche rolle, da er mir die ausführbare datei liefert und letztlich durch ihn ja auch die Sprache definiert wird. Daran habe ich dann auch im wesentlichen gedacht, als ich mir überlegt habe, das es evtl. sinn macht eine Funktion die einen Pfad abfragt so zu gestalten dass sie dann ein ergebnis liefert, das vom compiler direkt umgesetzt werden kann. Compiler werden doch eh für jedes OS angepasst.
0

#15 Mitglied ist offline   TiKu 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 10. Oktober 06
  • Reputation: 0
  • Wohnort:Dresden
  • Interessen:Softwareentwicklung

geschrieben 10. Oktober 2006 - 15:31

FolderBrowser.SelectedPath wird zur Laufzeit aufgerufen. Was macht Dein Compiler zur Laufzeit des Programms? Richtig, nichts.
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0