Laden...

Forenbeiträge von Getränke Hoffmann Ingesamt 177 Beiträge

07.12.2007 - 14:58 Uhr

Linq to SQL finde icha uch sehr interessant. Kann ich das in Visual Studio 2005 bereits nutzen?

07.12.2007 - 13:14 Uhr

Warum sollten SSL und IPSec nicht zur Webverschlüsselung dienen?

Ansonsten findest Du hier vielleicht etwas nützliches:

http://www.microsoft.com/germany/msdn/solve/knowhow/sicherheit/default.mspx

07.12.2007 - 12:49 Uhr

Hi,

ich würde gern ein Programm schreiben, dass den Systemstart von Windows protokolliert. Dabei interessieren mich die Fragen:

  • welche Dienste/ Programme werden wann geladen?

  • Dauer des Ladevorgangs des einzelnen Dienstes.

Nur weiss ich nicht, wie ich da am besten anfange, also wie schreibe ich ein Programm, was das Windows Verhalten protokolliert?

16.11.2007 - 17:04 Uhr

Hi,

ich habe (mal wieder) Probleme mit Dateizugriffen von meiner Apllikation aus.
Im konkreten Fall geht es darum, dass eine XML Datei, die an einem im Programm bestimmten Ort liegt, zum Lesen geöffnet werden soll.

Jedes Mal, wenn die betreffende Funktion ausgeführt wird, die eigentlich die XML Dateiein einlesen soll, bekomme ich eine Fehlermeldung:

"Der Zugriff auf den Pfad C:\XYZ wurde verweigert"

Jetzt habe ich in der .NET Framework 2.0 Konfiguration unter "Laufzeitrichtlinie"-> "Computer" -> "Codegruppen" -> "All_Code" den Berechtigungssatz über den Eigenschaftendialog auf "Full Trust" gesetzt.

Leider hatte ich damit keinen Erfolg.

Nun habe ich zwei Fragen:

  1. Was muss ich tun, damit mein Programm die Dateien öffnen darf?
  2. Gibrt es irgendwo eine gute und verständliche Erkärung darüber, wie man denn diese .NET Codesicherheit richtig anpasst?

Ich finde den Dialog völlig unintuitiv und auch die Informationen, die ich in der mSDN dazu finde, sind nicht wirklich besser.

25.10.2007 - 15:05 Uhr

Ja, Danke.

Aber ich finde einfach, dass dort mein Problem einfach nichit beschrieben ist. Als Lösung findet sich dort ein Link auf ein Externes Programm- aber ich will selber nach einem Ansatz suchen.

Deshalb habe ich ja auch meinen Code geposted.

25.10.2007 - 13:07 Uhr

Hi,

ich werde nicht schlau daraus. folgender Code:

  • Ich kann in meinem Userkontext auf c:\ zugreifen
  • Ich sehe auch sonst keinen Fehler im Code
  • Warum habe ich keine Zugriffsrechte????

private string logfilepath = Properties.Settings.Default.LogFileLocation; // steht C:\ drin...
        private StreamWriter writer;
        private FileStream strm;
                        

        public ProtocolOutput()
        {
           
            Properties.Settings.Default.LogFileLocation = Directory.GetCurrentDirectory()+ @"\logfile.txt";
            try
            {
                strm = File.Create(logfilepath);
                writer = new StreamWriter(strm,Encoding.Default); // Hier wird Exception geworfen- Zugriff auf C:\ verweigert
            }
            catch (SystemException ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                return;
            }

        }

23.10.2007 - 19:30 Uhr

Echt? Ich habe da keinen gefunden!

23.10.2007 - 19:08 Uhr

Naj, leider habe ich es hier nicht mit strings, sondern DataTable Objekten zu tun.

23.10.2007 - 18:57 Uhr

Hi,

seit einer Weile zerbreche ich mir hier den Kopf, verwerfe ständig Codeschnippsel etc., weil ich irgendwie keine anständige Lösung finde.

Das Problem:

Ich habe eine DataTable, in dieser gibt es eine Spalte, welche Fremdschlüssel zu einer anderen Tabelle enthält.

Ich will jetzt prüfen, ob es der DataTable Zeilen gibt, welche den gleichen Fremdschlüssel enthalten und diese dann zu einer eigenen Tabelle zusammenfassen.

Irgendwie finde ich alle meine Lösungsansätze schlecht:


private DataTable OthersOpen 

// (...) ausgelassen
// OthersOpen existiert und wurde mit Werten gefüllt

            List<Guid> doubles = new List<Guid>();            
            doubleOrders = new DataTable();          
            doubleOrders = OthersOpen.Clone();

            for (int i = 0; i < OthersOpen.Rows.Count; i++)
            {
                Guid test = (Guid)OthersOpen.Rows[i]["ForeignID"];
                for (int j = i + 1; j < OthersOpen.Rows.Count; j++)
                {
                    if (test == (Guid)OthersOpen.Rows[j]["ForeignID"])
                    {
                        DataRow dr = OthersOpen.Rows[j];
                        doubleOrders.ImportRow(dr);
                        doubles.Add(test);
                    }

                }
            }

Wie kann ich hier sicherer/ besser sortieren?

14.09.2007 - 16:23 Uhr

folgendes XML Schema habe ich gerade zusammengebastelt:


  <xs:element name="Emailrecepients">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="person" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="realname" type="xs:string" minOccurs="1" maxOccurs="1"/>
              <xs:element name="mailaddress" minOccurs="1" maxOccurs="1"/>
              <xs:simpleType>
                <xs:restriction base="xs:string">
                <xs:pattern value="[^@]+@[^\.]+\..+"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
     </xs:complexType>
  </xs:element>

Bemängelt wird das "simpleType" unterhalb von "mailaddress". Das übergeordnete sequence Element ließe dies nicht zu.

Wie soll ich denn dann eine eigene restriction einführen? Ausserdem ist mir das echt neu, dass das so nihct geht. MSXML != W3CXML?

14.09.2007 - 14:18 Uhr

Hier haste schonmal einen Einstig. Wie das genau ging habe ich vor 10 Jahren auch mal gelernt...

http://de.wikipedia.org/wiki/Ellipse

...und wieder vergessen.

14.09.2007 - 13:43 Uhr

danke, das hatte ich mir erhofft. Nur wollte ich erstmal "andere Meinungen" einholen, bevor ich es ausprobiere und es dann doch nicht klappt.

14.09.2007 - 13:17 Uhr

Hallo,

mein Problem ist folgendes:

ich soll eine (XML) Datei zentral auf einem Server bereitstellen, deren Inhalt soll dann von mehreren Clients aus (auch gleichzeitig) ausgelesen werden können.

Die Clients nehmen keinerlei Veränderungen an der Datei vor, sie haben nur Lesezugriff.

  • Ist das überhaupt möglich? (mehrere gleichtzeitig, nur lesen)

  • Wenn nicht, hat jemand eine bessere Idee?

Gruß

GH

31.08.2007 - 14:31 Uhr

Okay, da habe ich nihct dran gedacht.

31.08.2007 - 14:23 Uhr

Hallo,

nun ein etwas mysteriöseres Problem.

folgender Code:


 public CheckReg()
        {

        
            // Initialize and start timer
            time = new Timer();
            time.Tick += new EventHandler(time_Tick);
            time.Interval = 1000; // 1 sec
            time.Start();
            log = new Logfile();
            log.Add("Timer initialisiert");
        }

        void time_Tick(object sender, EventArgs e)
        {
            log.Add("Tick");
            time.Stop();
            checkAndAlterRegistry(); // irgendne Methode
            time.Enabled = true;

        }


Führe ich diesen Code im Rahmen eines Windows Dienstes aus, dann schreibt er mir ins Logfile "Timer initialisiert"...und sonst nichts. Das Tick() Event wird nicht ausgelöst.

Führe ich den Code als geöhnliches Programm (kein Windows Dienst) aus, dann funktioniert alles einwandfrei (Tick wird ausgelöst).

Ich habe keine Ahnung, warum.

31.08.2007 - 14:01 Uhr

okay, habe es jetzt mit File Append gelöst:


     public Logfile()
        {
            path += filename;
            if (!File.Exists(path))
            {
                using (sw = File.CreateText(path))
                {
                    sw.WriteLine("Logfile erstellt" + DateTime.Now.ToString());
                }
            }

        }

        public void Add(string entry)
        {
            using (sw = File.AppendText(path))
            {
                sw.Write(DateTime.Now.ToString() + '\t' + entry);
                sw.Write(Environment.NewLine);
            }
        }


31.08.2007 - 13:21 Uhr

Da ich aber keine explizite Open() Methode habe, weiss ich nicht genau, wann der StreamWriter geöffnet wird. Mit dem Konstruktor? Aufruf im Using?

Ausserdem wird lt. MSDN am Ende vom Using statement ein Close() ausgeführt.
Deswegen bekomme ich mit dem og. Code ne Exception, lass ich das Close() hingegen weg, wird gemoppert, ich müsse den Stream erst öffnen...ratlos bin, Master Luke.

31.08.2007 - 13:14 Uhr

Hallo,

ich wollte ein kleines Logfile schreiben und komme mit dem .NET StreamWriter nicht ganz zurecht.

Im Konstruktor erzeuge ich eine File:


public Logfile()
{
fs = File.Create(path);
sw = new StreamWriter(fs, Encoding.Default);
}

Weiterhin habe ich eine Methode, die sofern sie aufgerufen wird, eine neue Zeile an den Code anhängen soll:


public void Add(string entry)
        {
            using(sw)
            {                               
                sw.Write(DateTime.Now.ToString() +'\t'+entry);
                sw.Write(Environment.NewLine);
                sw.Close();
            }
        }

Und da beginnt meine Misere.

Wann und wie muss ich in der richtigen Reihenfolge den FileStream öffnen/ schliessen? Wie mache ich das richtig?

Ein Open() gibt es ja leider nicht.

30.08.2007 - 17:37 Uhr

Eben das Beispiel in der MSDN verstehe ich einfach nicht.


private static string rk1 = @"htmlfile\shell\Print\command\";

// ...
RegistryKey rKey = Registry.ClassesRoot.OpenSubKey(rk1, true);

string comp = (string)rKey.GetValue(); 
// Das geht nicht, get Value will unbedingt einen Namen als Argument haben....

30.08.2007 - 16:58 Uhr

Hi,

ich versuche mich gerade an einem Programm, welches einen RegistryKey- Inhalt prüfen soll und ggf. verändert.

Leider komme ich trotz Lektüre im Netz nicht ganz dahinter, wie das gehen soll.
Hier mein Code:


// Key holen
RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\Print\command\");

// und jetzt komme ich nicht weiter...

In dem Registry Pfad, gibt es einen Key. Dessen Name ist (Standard) und dieser hat einen Wert (Typ: Reg_sz).

Dieser wert entspricht einem String und ich will jetzt prüfen, ob dieser String einem bestimmten Wert gleicht. Falls nicht, soll er geändert werden.

Leider komme ich mit den GetValue() und SetValue Methoden nicht zurecht.

Diese erfordern immer den Namen eines Keys. Nun ist der Name aber leider vom System Vergeben und "(Standard)"- wie komme ich da nur dran?

24.08.2007 - 17:42 Uhr

Hallo Forum,

ich habe ein merkwürdiges Problem. Wenn ich einen string in einer TextBox darstellen will, dieser die Escape Sequenz '\n' (für New Line) enthält, stehen an der entsprechenden Stelle in der TextBox keine Zeilenumbrüche, sondern merkwürdige Kästchen.

a) woran liegt das? '\n' ist eigentlich eine Standard Escape Sequenz.

b) wie kann ich in einem string Zeilenumbruchsbefehle mit auf den Weg geben, ohne dass es hier zu merkwürdigen Zeichen kommt?

Danke für Eure Hilfe!

16.08.2007 - 13:36 Uhr

Wohin willst Du sie denn exportieren?

16.08.2007 - 12:57 Uhr

Wie ist da eigentlich MercuryQuickTest von HP?

14.08.2007 - 13:13 Uhr

Hi,

was ist eigentlich der Unterschied zwischen den Konvertierungen:


// 1
(bool) myVar;
//2
Convert.ToBoolean(myVar);

Danke!

03.08.2007 - 18:00 Uhr

Ich habe es selbst gefunden- die Clone() Methode des DataTable Objekts macht den Job.

Dummerweise ging ich bislang davon aus, diese würde die gtanze Tabelle mitsamt Inhalt kopieren...

Trotzdem Danke!

03.08.2007 - 17:28 Uhr

Wenn ich eine DataTable X habe und eine DataTable Y. Sich in DataTable X besitzt drei Spalten "Name1", "Name2, "Name3". Nun will ich, dass Tabelle Y die gleiche Struktur, nicht aber den gleichen Inhalt erhält- wie gehe ich da vor?

03.08.2007 - 17:01 Uhr

Hi,

egal was ich versuche, ich bekomme es nicht hin. Kann mir vielleicht einer weiterhelfen?


// es existiert eine gefüllte DataTable namens DtResult

DataTable doubsDt = new DataTable();


string actualLAST = DtResult.Rows[i]["Lastname"].ToString();

if (String.Compare(actualLAST, DtResult.Rows[i + 1]["Lastname"].ToString())== 0)
{

doubsDT.ImportRow(ccl.DtResult.Rows[i + 1]);
 
}



Das Problem: Es wird nur eine DataRow Importiert. Lasse ich mir die Anzahl der Columns anzeigen, ist diese 0. Es werden nicht die Werte in die Tabelle übertragen.

Wie bekomme ich jetzt die Werte in die Tabelle?

03.08.2007 - 15:52 Uhr

.NET Framework 2.0 installiert?

03.08.2007 - 15:46 Uhr

Danke, das klappt!

EDIT: Nee, klappt doch nicht, es wird eine leere Tabellenzeile eingefügt.

02.08.2007 - 18:00 Uhr

Nein, die gibt es natürlich nur für die ganze Tabelle...

02.08.2007 - 17:38 Uhr

Hilft auch nichts, das gibt den gleichen Fehler:


DataRow drow = doubsDT.NewRow();
drow = DtResult.Rows[i];
doubsDT.Rows.Add(drow);

02.08.2007 - 17:24 Uhr

verwendetes Datenbanksystem: <SQL Server 2002>

Hi,

ich habe hier folgenden fehlerhaften Code. Es gibt regelmässig eine Exception "diese Zeile gehört bereits zu einer Tablelle":


private void Compare(DataTable DtResult)
{
DataTable doubsDT = new DataTable();
 if (String.Compare(actualFIRST, DtResult.Rows[i + 1]["Firstname"].ToString())==0)
                            {
                                
                                // Hier gibt es den Fehler                                
                                doubsDT.Rows.Add(ccl.DtResult.Rows[i]);
                                
                            }
}

Nun, ich weiss dass diese Zeile zu einer Tabelle gehört- ich will diese Spezielle Zeile ja in die Neue Tabelle hineinkopieren....warum darf ich das nicht so einfach?

02.08.2007 - 16:17 Uhr

Na, ja...normalerweise hat eine Exception eine konkrete Ursache und bevor man einen Mechanismus im Sinne eine Kontrollstruktur (wenn exception, dann eben 1min abwarten und trotzdem code ausführen) über ein try/catch statement laufen lässt, sollte man doch eher dem Kern der Ursache auf den Grund gehen. Warum tritt der Fehler auf? Dann brauchst Du den Timer auch nicht mehr.

Ansonsten guck mal hier:

aufruf alle 10 sekunden

02.08.2007 - 13:47 Uhr

verwendetes Datenbanksystem: <SQL Server 2000>

Hallihallo Forum!

Wie kann ich die Zeit, welche auf einen SQL- Methodenaufruf gewartet wird, verlängern?

um es verständlicher zu machen:


SqlConnection con = new SqlConnection(ConnectionString);
            SqlCommand com = new SqlCommand(
                "SELECT * FROM OWNERS WHERE Zip LIKE '" + zip + "%' ORDER BY Lastname", con);
            con.Open();
            SqlDataReader dr = com.ExecuteReader();

In der Letzten Zeile gibt es dann eine Timeout Exceprtion, da es wirklich viele Datensätze sind, die da durchsucht werden....

Wenn ich den (SQL-) Befehl im QueryAnalyzer des SQL Servers selber ausführe, läuft er auf jeden Fall erfolgreich durch.

02.08.2007 - 13:43 Uhr

Encoding muss auf Encoding.Default gestellt werden, damit Sonderzeichen akzeptiert werden.

02.08.2007 - 13:42 Uhr

Es wäre extrem Hilfreich, wenn Du den Inhalt der Fehlermeldung hier mal posten könntest. Sonst wird es schwierig, Hilfe zu geben.

Ansonsten programmier Dir einen Timer, der 5 Sek wartet

02.08.2007 - 11:38 Uhr

okay, ich habe die Vorlage einfach niht gefunden, da man sie in der Regel nur unter "Neue Website" und nicht unter "Neues Projekt" findet.

01.08.2007 - 16:54 Uhr

Hallo,

eben wollte ich mit einer solchen Vorlage arbeiten, musste aber feststellen, dass sie nicht existiert.

Auf dem Rechner von meinem Kollegen gibt es diesen Vorlagentyp. Ich habe daraufhin die VS 2005 DVD eingelegt um das Feature ggf. nachzuinstallieren...ich habe ne Vollinstallation drauf....muss ich bei MS irgendwas herunterladen und nachinstallieren?

30.07.2007 - 18:02 Uhr

Nee, zur Laufzeit will ich die sicher nicht austauschen. Danke für die Tipps, ich hatte vorher nur unter C++ mit DLLs gearbeitet und werde mir aber auf jeden Fall mal anschauen, ob das Interface System von C# mir trotzdem weiterhelfen kann.

Unter C++ hatte ich halt immer einen Header pro Klasse entwickelt, die Methoden mit =0 als "nur in der geerbten Version benutzbar" (mir fällt dat Fremdwort gerade nicht ein) gekennzeichnet und in den jeweilig abgeleiteten Klassen dann auf die DLL verwiesen, wo der eigentliche (arbeitende) Code drin war. So konnte ich die DLLs einfach für andere Projekte wiederverwenden.

Nur geht es bei C# ja schonmal damit los, dass ich mir die Header Dateien abgewöhnen musste.... : 🙂

30.07.2007 - 16:01 Uhr

Hallo,

ich habe hier mal eine allgemeine Frage:

Ich will eine Software leichter Wartbar machen. Dabei schwebt mir folgendes Design vor:

  1. Aus eine Klassenmethode einer c#- Klasse ruft Code auf, welcher in einer DLL steht.
  2. Der Code in dieser DLL ist auch (von mir) in C# geschrieben worden

Ziel ist es, bei Programmupdates ggf. Nur die DLLs austzutauschen, das Grundgerüst der Software aber noch Möglichkeit nicht anzurühren.

  • Ist das überhaupt ratsam?
  • Gibt es unter c#/ .NET evtl einen Mechanismus, um dies zu erreichen, der vorzuziehen wäre?

Gibt es irgendwo eine sinnige Erklärung, wie man Code aus DLLs in seinen eigenen Quellcode einbindet?

Vielen Dank für die Hilfe!

20.07.2007 - 15:00 Uhr

Ja, Blindheit ist manchmal eine schwere Geißel!

20.07.2007 - 13:29 Uhr

Hi,

zunächst- hier werden etliche Funktionen aus

Microsoft.Interop.Outlook

verwendet, also nicht wundern, wenn der Code auf den ersten Blick etwas merkwürdig aussieht.

Beschreibung:

Es gibt eine Endlosschleife, anscheinend wird immer das gleiche Element bearbeitet:


Application OlApp = new Application();
            // den MAPI Namespace erzeugen
            NameSpace OlNamespace = OlApp.GetNamespace("MAPI");
            MAPIFolder AppointmentFolder = OlNamespace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);

            // die einzelnen Items verwaltbar machen
            Items OlItems = (Items)AppointmentFolder.Items;
            OlItems.Sort("[Start]", false);
            OlItems.IncludeRecurrences = true;

      

            // filtern nach Terminen innerhalb der Sommerzeit
           
            string itemFilter = "[Start] >= " + changeDT(st.FirstDay) + " and [End] <= " + changeDT(st.LastDay);
         
            Items StItems = OlItems.Restrict(itemFilter);
            StItems.Sort("[Start]", false);
            StItems.IncludeRecurrences = true;

            AppointmentItem appItem;
            appItem = (AppointmentItem)StItems.GetFirst();
            while (appItem != null)
            {
                // Problem Hier: Es wird immer wieder das Gleiche Item (appItem) verwendet
                appItem.Start = appItem.Start.AddHours((values.ShiftValue) * (-1));
                appItem.Save();
            }

// usf.

18.07.2007 - 14:21 Uhr

Original von floetentheo
So ich hab die Lösung gefunden. Mein Office 2003 war ohne .NET Unterstützung installiert. Nun geht es.
(...)

Ich befürchte, dass ich dieses Problem auch habe. Es geht bei meinem Zielsystem, zwar um einen Fehler, dass die Assembly Microsoft.Interop.Outlook nicht gefunden wird, allerdings dürfte die Ursache die gleiche sein.

Nun ist es so, dass ich dem Kunden nach Möglichkeit nicht zumuten will, alle seine Outooks erst mit der .NET unterstützumg auszustatten, damit mein Programm funktioniert.

Kann ich die Assembly irgendwie mit in das Programm einkompilieren?

oder

Besteht die Mögliuchkeit, die Sache mittels Setup- Projekt auf dem Zielclient zu installieren?

Danke für Hinweise!

EDIT:

Einfach im Weitergabeprojekt in VS2005 die notwendigen Assemblies mitangegeben und schon läuft alles.

18.07.2007 - 13:58 Uhr

Oh- ich seh' Deine Antwort ja jetzt erst.

Hier der COde:


 int counter = 0;

Application OlApp = new Application();
NameSpace OlNamspace = OlApp.GetNamespace("MAPI");
MAPIFolder AppointmentFolder = OlNamspace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
AppointmentFolder.Items.IncludeRecurrences = true;
foreach (AppointmentItem app in AppointmentFolder.Items.Restrict("[IsRecurring] = TRUE"))
{

AppointmentFolder.Items.IncludeRecurrences = true;

// PROBLEM: Es wird nur das erste Element der Terminserie angegangen, ein Element innerhalb der Serie wird ignoriert.

                if(app.Start.Date >= st.FirstDay && app.Start.Date <= st.LastDay)
                {

                          if (app.IsRecurring)
                         {
                            RecurrencePattern rec = app.GetRecurrencePattern();
                            rec.StartTime = rec.StartTime.AddHours((values.ShiftValue) *                 (-1));
                            rec.EndTime = rec.EndTime.AddHours((values.ShiftValue) * (-1));
                            app.Save();
                        }
                        else
                        {
                        app.Start = app.Start.AddHours((values.ShiftValue) * (-1));
                        app.Save();
                        }

                   counter++;
                 }

06.07.2007 - 20:37 Uhr

Okay, das war ganz hilfreich. Nun ist das Problem, dass ich bestimmte Elemente innerhalb der Terminserie verschieben muss (z.B. alle im Juni). Mein Code liefert mir aber leider immer nur das allererste Element der Serie zurück, prüft, ob es im Juni liegt, verneint dies, und springt dann zum nächsten Serienstartelement.

06.07.2007 - 19:11 Uhr

Ich hoffe, er gibt mir schonmal Anhaltspunkte. ist leider in diesem "fiesen" VB geschrieben...