AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C# Textdatei von Windows öffnen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei von Windows öffnen lassen

Ein Thema von JayK · begonnen am 27. Mai 2005 · letzter Beitrag vom 28. Mai 2005
Antwort Antwort
JayK

Registriert seit: 1. Mai 2005
49 Beiträge
 
#1

Textdatei von Windows öffnen lassen

  Alt 27. Mai 2005, 15:39
Hallo,

ich möchte in meinem Programm, wenn man in der AboutBox auf den Button "Lizenz" klickt, eine Textdatei namens "License.txt", die im selben Verzeichnis wie das Programm ist, von Windows öffnen lassen (das was ShellExecute bei Pascal machen würde).

Bis jetzt habe ich folgenden Code:
Code:
void BLicenseClick(object sender, System.EventArgs e)
      {
         try {
            Process.Start("License.txt");
         } catch (Win32Exception) {
            MessageBox.Show("Datei \"License.txt\" konnte nicht gefunden werden.\nBitte überprüfen Sie ihre Installation oder suchen Sie selbst nach der Datei.", "Datei nicht gefunden", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
         }
         
      }
Aber wenn ich auf den Button klicke, schmeißt der JIT-Compiler von .NET eine Fehlermeldung raus.

Was mache ich falsch?

Schon mal Danke im voraus,
JayK
nil
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Textdatei von Windows öffnen lassen

  Alt 27. Mai 2005, 15:40
Zitat von JayK:
Aber wenn ich auf den Button klicke, schmeißt der JIT-Compiler von .NET eine Fehlermeldung raus.

Was mache ich falsch?
Du verschweigst uns die Fehlermeldung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Textdatei von Windows öffnen lassen

  Alt 27. Mai 2005, 15:42
Hi,

die Fehlermeldung, wie Luckie bereits erwähnte, wäre nicht schlecht zur Lösung des "Rätsels"

Aber allgemein kann ich Dir zu diesem Code-Schinppsel empfehlen - vllt. hilfts Dir ja weiter:
1.) Benutze keine relativen Pfadangaben. Gib den vollständigen Pfad mit an
2.) Prüfe vorher, ob die Datei nicht existiert.

mfG
mirage228

Edit: Man sollte schon seinen eigenen Nickname richtig schreiben können
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Textdatei von Windows öffnen lassen

  Alt 27. Mai 2005, 16:19
Bei mir kommt keine Exception. Ist die Datei vorhanden, erscheint sie im Notepad. Ist sie nicht vorhanden, erscheint die selbst geschriebene Fehlermeldung aus dem catch-Teil. Bzgl. des Pfades und der Prüfung per "File.Exists" stimme ich meinen Vorrednern zu.
Code:
string licenseFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
licenseFile = Path.Combine(licenseFile, "License.txt");
  Mit Zitat antworten Zitat
JayK

Registriert seit: 1. Mai 2005
49 Beiträge
 
#5

Re: Textdatei von Windows öffnen lassen

  Alt 27. Mai 2005, 21:06
Hallo,


Zitat von Luckie:
Du verschweigst uns die Fehlermeldung.
OK:

Zitat von JIT-Compiler:
System.ComponentModel.Win32Exception: Das System kann die angegebene Datei nicht finden
at System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
at JayTextEdit.AboutBox.BLicenseClick(Object sender, EventArgs e) in c:\Dokumente und Einstellungen\Jakob\Eigene Dateien\SharpDevelop Projects\JayTextEdit\AboutBox.cs:line 173
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage (Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(M essage& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Zitat von Mirage228:
Aber allgemein kann ich Dir zu diesem Code-Schinppsel empfehlen - vllt. hilfts Dir ja weiter:
1.) Benutze keine relativen Pfadangaben. Gib den vollständigen Pfad mit an
Dann bräuchte ich eine Funktion, um das Verzeichnis meines Progs zu ermitteln. Bei Delphi isses ExtractFilePath(paramstr[0]) oder so.
Aber für C# kenn ich des noch nich.

Zitat von Mirage228:
2.) Prüfe vorher, ob die Datei nicht existiert.
Die Datei existiert bestimmt und wenn nicht, dann kommt eben das Fehlerfenster, das ich gemacht habe.

Zitat von MathiasSimmack:
Code:
string licenseFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
licenseFile = Path.Combine(licenseFile, "License.txt");
Jetzt weiß ich wohl, wie daa geht werds mal probieren.

EDIT: *räusper* wo befindet sich der/die Strukt/Klasse/wasauchimmer Assembly? Wenn ich den Code einfach nur durchrauschen lasse, findet er kein Assembly.
nil
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6

Re: Textdatei von Windows öffnen lassen

  Alt 28. Mai 2005, 07:39
Jay: sorry, die Exceptionmeldung ist ja wohl eindeutig und Deutsch. Daher gibt´s von mir ein freches .

1. Existiert die Datei?
Code:
File.Exists
2. Die benötigten Assemblies (ein paar kennst du sicher schon)
Code:
using System.Diagnostics;   // Process
using System.ComponentModel; // Win32Exception
using System.IO;            // File.Exists, Path.xxx
using System.Reflection;    // Assembly
  Mit Zitat antworten Zitat
JayK

Registriert seit: 1. Mai 2005
49 Beiträge
 
#7

Re: Textdatei von Windows öffnen lassen

  Alt 28. Mai 2005, 10:58
Zitat von MathiasSimmack:
Jay: sorry, die Exceptionmeldung ist ja wohl eindeutig und Deutsch. Daher gibt´s von mir ein freches .
Vielen Dank. Ich weiß, dass er meckert, die Datei gäbe es nicht. Aber ich weiß nicht wie es dazu kommt, die Datei ist da!

Zitat von MathiasSimmack:
1. Existiert die Datei?
Code:
File.Exists
Na gut, dann bauen wir das auch noch ein .
Danke für die using-Sachen.

So siehts bis jetzt aus:
Code:
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace JayTextEdit
{
   /// <summary>
   /// Description of Form1.
   /// </summary>
   public class AboutBox : System.Windows.Forms.Form
   {
      private System.Windows.Forms.Label label12;
      private System.Windows.Forms.Label label1;
      private System.Windows.Forms.Label label11;
      private System.Windows.Forms.Label label9;
      private System.Windows.Forms.Label label8;
      private System.Windows.Forms.Button bOK;
      private System.Windows.Forms.Button bLicense;
      public AboutBox()
      {
         //
         // The InitializeComponent() call is required for Windows Forms designer support.
         //
         InitializeComponent();
         
         //
         // TODO: Add constructor code after the InitializeComponent() call.
         //
      }
      
      [Windows Forms Designer Generated Code]

      void BOKClick(object sender, System.EventArgs e)
      {
         this.Close();
      }
      
      void BLicenseClick(object sender, System.EventArgs e)
      {
         string licenseFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
         licenseFile = Path.Combine(licenseFile, "License.txt");
         if (File.Exists(licenseFile))
         {
             try {
                Process.Start(licenseFile);
             } catch (Win32Exception) {
                MessageBox.Show("Datei \"License.txt\" konnte nicht gefunden werden.\nBitte überprüfen Sie ihre Installation oder suchen Sie selbst nach der Datei.", "Datei nicht gefunden", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
             }
         }
         else
         {
            MessageBox.Show("Die angeforderte Datei existiert nicht.", "Datei existiert nicht", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
         }
         
         
      }
      
   }
}
Es kommt immer "Die Datei existiert nicht".

Moment: Geistesblitz!!!! #develop speichert die Debug-Exes ja in einem Unterordner Klar das das nicht klappt! Ist ja dumm.
nil
  Mit Zitat antworten Zitat
JayK

Registriert seit: 1. Mai 2005
49 Beiträge
 
#8

Re: Textdatei von Windows öffnen lassen

  Alt 28. Mai 2005, 11:02
So, ich hab die License.txt in den Debug-Ordner kopiert.
Jetzt klappts! Da hätte ich aber auch eher drauf kommen können.
Danke leute.
nil
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz