Laden...
Avatar #avatar-2269.gif
dani.net myCSharp.de - Member
Software-Developer Wil SG / Schweiz Dabei seit 07.07.2006 175 Beiträge
Benutzerbeschreibung

Forenbeiträge von dani.net Ingesamt 175 Beiträge

12.08.2009 - 13:20 Uhr

Der Zugriff auf die Settings funktioniert so:


string lic = XYZProg.Properties.Settings.License;

So wie du's machst, könntest Du auf die "normalen" AppSettings zugreifen. In Deinem Fall müsste der Config-Eintrag dann so aussehen:


<add key="XYZProg.Properties.Settings.License" value="Max Mustermann" />

Gruss

12.08.2009 - 13:03 Uhr

Hallo pc-mensch

Der gepostete Code ist i.O.
Sicher das du nirgends die testTable zurücksetzt oder das da sonst noch irgendwas dazwischen funkt? Poste sonst vielleicht etwas mehr Code.

12.08.2009 - 11:59 Uhr

Hallo

Dein DestinationFolder ist falsch definiert (sieht man eigentlich ganz gut, wenn man Dein web.config-Beispiel anschaut). Du definierst beim DestinationFolder ein File, richtig wäre aber natürlich der Ordner. Also:


<Copy SourceFiles="@(DropLocationFiles)"
          DestinationFolder="C:\release\Web\%(RecursiveDir)" />

Habs jetzt nicht ausprobiert, aber so sollte es gehen.

Gruss

22.08.2007 - 11:22 Uhr

Original von herbivore
wie gesagt: Debugging/Tracing/Logging

hm...
Loggen tu ich, aber kann nicht mehr rausschreiben als das der Prozess ordnungsgemäss beendet wurde.
Procmon sagt auch nichts verdächtiges.
Im Eventlog ist wie schon gesagt auch Ebbe

Mein Latein ist am Ende.

22.08.2007 - 09:57 Uhr

Hallo herbivore

Blöde Frage: Wie finde ich denn die Todesursache? 🙂 Fehler gibt's nicht, Eventlog schweigt... ?(

Gruss
Dani

22.08.2007 - 08:38 Uhr

Hi

Ich hoffe ich bin im richtigen Forum. Hab da ein seltsames Problem mit einem Scheduled Task.
Dieser startet eine kleine .NET Konsolen-Applikation. In dieser Applikation wird wiederum per Process.Start ein .vbs-File aufgerufen.


Process vbsProc = Process.Start(ConfigurationManager.OutputPath + "\\" + WD_GEN);

Danach prüfe ich ob der VBS-Prozess noch am laufen ist und warte so lange:


while(Process.GetProcessById(vbsProc.Id) != null)
{
    System.Threading.Thread.Sleep(TIME_STEP);
}

Das funktioniert alles auch ohne Probleme. Wenn ich nun aber den Scheduled Task unter einem User laufen lasse, der NICHT am System angemeldet ist, läuft der VBS-Prozess nicht bis zum Schluss durch, sondern hört irgendwann nach einer gewissen (+/- konstanten) Zeit auf (ohne erkennbaren Fehler).

Wenn ich den Scheduled Task jedoch mit dem User starte, der gerade angemeldet ist, funktioniert alles.

Weiss da jemand was? Ist zum verzweifeln sowas...

Dani

28.06.2007 - 13:56 Uhr

Hi

Das Problem war, dass der Prozess, indem das VBS läuft (wscript.exe) natürlich nicht nur für dieses eine VBS gilt, sondern für alle anderen evtl. laufenden auch.

Ich habs nun aber über das ID-Property des gestarteten Prozesses gelöst.

Danke Dir!
Dani

28.06.2007 - 13:38 Uhr

Original von nin
könnte gehen, dass du mit folgendem Code überprüfst, ob VBS schon läuft:

Hi nin

Hab ich mir auch schon überlegt, das Problem an dieser Lösung ist nur etwas, dass es nicht auszuschliessen ist, dass ein Prozess mit demselben Namen von irgendwo anders her auch noch gestartet wird...

Dani

28.06.2007 - 13:25 Uhr

Hi

Ich führe mittels


Process.Start("myfile.vbs");

eine VBScript-Datei aus, die mir Word-Files generiert.

Gibt es irgendeine Möglichkeit, abzufragen ob das VBS noch läuft? Die einzige Idee die ich habe, wäre eine Status-Datei zu schreiben... aber das gefällt mir so nicht =)

Gruss
Dani

13.06.2007 - 21:48 Uhr

Hi

Beim Aufruf der FindControl-Methode wird die Referenz deines BT-Objektes ja wieder überschrieben. Wenn das FindControl nun deinen Button nicht findet (was wohl so sein wird), wird deinem bt null zugewiesen...

Die vorgängige Instanzierung kannst du dir also sparen, die hat so oder so hier keinen Einfluss.

Gruss
Dani

29.05.2007 - 11:00 Uhr

Native - mit meinen Kenntnissen kann ich daraus keine nützlichen Debug-Infos herauslesen; muss aber nicht heissen, dass das nicht geht.

Vielleicht hilft das etwas weiter.

29.05.2007 - 10:45 Uhr

Hi Golo

Es handelt sich dabei um einen Byte-Offset in den Native-Code. Mit WinDbg lässt sich das einigermassen verständlich nachvollziehen.

Gruss
dani.net

28.05.2007 - 12:25 Uhr

Für mich steht da ganz zu oberst:

Der Pate (alle 3, im speziellen aber der erste)

Der und HdR sind bis jetzt die einzigen Filme, die ich mehr als einmal anschaute 🙂

18.05.2007 - 11:54 Uhr

TextBox myTextBox = (TextBox)myFormView.FindControl("myTextBox");

16.05.2007 - 12:20 Uhr

Also ich hab da mal ein kleines Sample gebastelt, dass aufzeigen soll, wie das in etwa funktioniert.

MarkUp:


<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true" OnRowEditing="GridView1_RowEditing">
        </asp:GridView>

Und hier noch das CodeBehind:


public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable source = GenerateDataSource();
            GridView1.DataSource = source;
            GridView1.DataBind();
        }
    }

    // irrelevant, nur ein kleiner Helper
    private static DataTable GenerateDataSource()
    {
        Random rnd = new Random();
        DataTable ret = new DataTable();
        ret.Columns.Add(new DataColumn("Col1"));
        ret.Columns.Add(new DataColumn("Col2"));

        for (int i = 0; i < 10; i++)
            ret.Rows.Add(rnd.Next(), rnd.Next());

        return ret;
    }

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        DataTable source = GenerateDataSource();
        GridView1.DataSource = source;
        GridView1.DataBind();
    }
}

Wichtig ist halt eben, dass das !IsPostBack um das Binding im Page_Load, sowie dass die Daten neu gebunden werden, wenn das RowEditing geklickt wird.

Wenn du die neuen DataSource-Controls verwendest, würde das ganze etwas einfacher werden, da das GridView mit diesen viel besser interagiert.

16.05.2007 - 11:40 Uhr

also wenn ich das mit dem postback mache, dann passiert ganix mehr, weil die datenbindung ja nur noch beim page-load ausgeführt wird.........

mmh wie gesagt, die datenbindung sollte einmal initial und dann nur noch bei Änderungen (an der DataSource) erfolgen. Bei einem PostBack wird dein GridView dann automatisch aus den View- und ControlState-Daten neu erstellt.

Deine Abfrage auf IsPostBack ist noch am falschen Ort. Korrekterweise müsste das nun irgendwie so aussehen:


protected void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack)
      Bind13();
}

void Bind13()
    {
        if (!Page.IsPostBack)
        {
            lst13ContentItems.DataSource = ds.Tables[stbl13];
            lst13ContentItems.DataBind(); // [B]das ist schon korrekt so![/B]
        }
    }

Was du immer noch nicht gesagt hast, ist wo dein GridView definiert wird. Es macht einen rechten Unterschied, ob das GridView dynamisch im Code oder im MarkUp definiert wird.

16.05.2007 - 11:25 Uhr

Original von DiscMaster
jap, gute idee,

Das ist keine Idee, sondern der normale Weg 😁 Das DataBinding erfolgt initial und wenn Änderungen an der Source gemacht werden.

Original von DiscMaster
nur die sache ist das mit jedem postback, also auch wenn ich auf nen button klick, dann wird die seite praktisch neu initialisiert, und damit ist die deklaration z.B. vom dataset
DataSet ds;
wieder auf null gesetzt!
damit ist die tabelle auch wieder weg

Hast du das mal probiert oder ist das einfach eine Annahme?
Wenn das GridView nicht neu erstellt werden muss, ist es auch ziemlich wurscht, ob die Datengrundlage noch da ist oder nicht...
Ist dein GridView im Markup definiert oder wird es dynamisch erstellt? Probier das mit dem IsPostBack mal aus, wenns nicht hinhaut poste was passiert und etwas kompletteren Code (inkl. MarkUp), sonst geht das hier noch ewig hin und her 🙂

16.05.2007 - 11:17 Uhr

oder einfach:


int num = myEnumValue.ToString().Split(',').Length;

Nicht so schön, aber effektiv 🙂

16.05.2007 - 11:07 Uhr

also was da sicherlich mal noch drumrum gehört ist ein:


if(!IsPostBack)
{
   lst13ContentItems.DataSource = ds.Tables[stbl13];
   DataBind();
}

Damit verhinderst du, dass die Tabelle jedesmal neu aufgebaut wird (was überflüssig ist, dank View- und Controlstate.

16.05.2007 - 10:55 Uhr

Das kommt darauf an, wie du dein GridView aufbaust. Umso weniger du selbst macht, umso mehr macht ASP.NET für dich =)

Poste doch mal, wie du deine Daten an die GridView bindest.

16.05.2007 - 10:38 Uhr

der sollte aber funktionieren, ohne irgendwelches zutun (also weg mit der lst13ContentItems_RowEditing-Methode).

Hast du das schon so probiert? Wie ist das verhalten dann? Wie und wo bindest du deine Daten an das GridView?

16.05.2007 - 10:32 Uhr

Original von talla
Das stimmt nicht. Mono implementiert schon seit über nen halben Jahr .Net 1.1 komplett und der aktuelle Stand unterstützt mittlerweile auch 2.0 zum großen Teil(ASP.NET 2.0 zum Beispiel komplett)

Richtig, ich musste vor kurzem ein recht komplexes .NET 2.0 Projekt unter Mono zum laufen bringen. Hat ca. 1/2 Tag Arbeit gekostet, also nichts.

Portabilität ist eh en relativer Begriff. Ich kenn ein paar Leute die Java programmieren, und was die jeweils anstellen müssen, um die vielgelobte Portabilität bei komplexeren Projekten hinzubekommen... =)

16.05.2007 - 10:27 Uhr

Also der "usual way" bei WCF sieht das so vor, dass du, bei der Message-basierten Security, was deins ja eigentlich ist, bei jeder Message Username/Passwort mitgibst.

In der praktischen Programmierung sieht das dann aber so aus, dass du die Credentials nur auf dem Proxy einmal angeben musst, also nicht bei jedem Aufruf.
Suche mal nach "UsernamePasswordValidator" in Verbindung mit WCF.

16.05.2007 - 10:23 Uhr

Arrays sind Referenztypen, d.h. wenn du eine Array übergibst, wird per se nur die Referenz darauf übergeben, und nicht wie bei den Value-Types, das ganze zuerst noch kopiert.

edit:
once more... zu spät =)

16.05.2007 - 10:18 Uhr

der Button in der Zeile sollte keine Probleme machen, wenn der CommandName auf "Edit" gesetzt ist.


<asp:Button ID="editButton" runat="server" Text="Mach mal" CommandName="Edit" />

15.05.2007 - 19:24 Uhr

Wie schon gesagt, der Click-Event wird nach dem RowEditing-Event abgearbeitet, dass kann so nicht funktionieren (und erklärt auch, wieso es nach dem zweiten Mal funktioniert).

Wie gesagt, mach doch alles im Button-Click - dann hast du keine Probleme beim Ablauf.

15.05.2007 - 19:02 Uhr

Du hast gesagt, dass du dann ne neue Row in die DataTable schreibst, davon steht nichts in deinem Handler. Daher dachte ich, dass du einen Click-Handler hast für deinen Button...

Poste sonst mal etwas Markup/Code wie die Sache aufgebaut ist.

15.05.2007 - 18:51 Uhr

Das Problem ist, dass der RowEditing-Event vor dem Click-Event deines Buttons abgearbeitet wird. siehe auch ASP.NET Page Lifecycle

Wieso machst du das ganze nicht gleich im Handler deines Buttons?

15.05.2007 - 17:30 Uhr

Der Ansatz von Herbivore sieht ja vor, DataSets aus der Datenzugriffsschicht zu liefern und aus diesen dann die BO zu erzeugen, so hab ich das verstanden und so machts für mich auch Sinn.
Das was ich beschrieben war, hat die BO bereits in der Datenzugriffsschicht erstellt und dann quer durchgereicht.

15.05.2007 - 15:50 Uhr

Original von brdi
Hallo

Hab ein kleines prob hab ein object das eigentlich ein array enthält (in etwa so 0x98 0x89 0x76 ...)

Was heisst eigentlich eigentlich? 😁
Dein "Array" muss ja in irgendeiner Form gespeichert vorliegen (als String, int... )... wie schaut denn das aus?

15.05.2007 - 15:33 Uhr

Original von herbivore
nicht? Auch nichts vergleichbares?

Nichts das ich kennen würde; bei meinen Java-Kenntnissen muss das aber gar nichts bedeuten 😁

Original von herbivore
Dann musst du dir selber etwas vergleichbares schreiben. Zumindest, wenn du auf die Entkoppelung von DAL und BL Wert legst.

Ok. Da werde ich in diesem Fall wohl XmlDocuments rausreichen, da die Datenbasis eh XML ist.

Aber hat mich mal so grundlegend wunder genommen. Den Ansatz den ich beschrieben habe, also die BusinessObjekte für alle zugänglich zu machen, hat nämlich den mühsamen Beigeschmack, dass diese dann natürlich keine Logik enthalten dürfen (oder sollten), also praktisch reine Attribut-Container.
Der Ansatz von herbivore mit den DataSets ist da schöner, hat dafür den (wohl vernachlässigbaren) Nachteil vom DataSet-Overhead.

15.05.2007 - 15:21 Uhr

Original von herbivore
gar nicht, die Datenzugriffsschicht (DAL) kann z.B. DataSets zurückliefern, aus denen die Business-Schicht (BL) dann Business-Objekte (BO) erzeugt. Dann müssen die BO nur in der BL bekannt sein. Und so soll es ja sein.

Richtig, worauf ich mich erinnere wieso ich mir diese Überlegungen überhaupt mache. Ich muss ne kleine Applikation in Java schreiben, und da gibts halt keine DataSets....

15.05.2007 - 15:18 Uhr

wenns nur ein Zeichen ist:


string s = "Hello";
char c = s[1]; // = e

sonst mit substring


string.Substring(int startIndex, int length);

[edit]... zu spät[/edit]

15.05.2007 - 15:03 Uhr

Original von Khalid
Bin selber gerade über meine eigenen Bezeichnungen gestolpert. Bei mir Kennzeichne ich meine Tabellen (also die Datenschichtbeschreibungen) immer als Businessobjekt und in der Businesschicht als Logikobjekte (weil ich die Schicht irgendwie immer Logikschicht nenne).

mh, also Logikobjekte bei dir würden dann den eigentlichen Businessobjekten entsprechen? Diese sind in der Logik-Schicht definiert? Und wie übergibst du diese an die Datenzugriffsschicht?

15.05.2007 - 13:04 Uhr

Original von Khalid
Die Businessobjekte liegen in der Datenschicht

Ja?
Das bedeutet aber wiederum, dass die Präsentationsschicht direkt mit der Datenzugriffsschicht verbunden ist...
Ausserdem finde ich auch, dass Business-Objekte eigentlich da nichts zu suchen haben, da sie herzhaft wenig mit Datenzugriff zu tun haben... oder seh ich das falsch?

15.05.2007 - 12:41 Uhr

ja... nur wo bringst du deine Businessobjekte unter?
Wenns in der Logikschicht ist, hat ja zB. die Datenschicht keinen Zugriff darauf...

15.05.2007 - 12:14 Uhr

Hey

Wo definiert ihr eigentlich eure Business-Objekte? Das Problem ist ja, dass diese jeweils in allen Tiers zugänglich sein müssten (Speichern eines Autos, Anzeigen eines Autos usw.).

Ich hab das bis jetzt jeweils so gelöst, dass ich eine separate "Schicht" mit den Business-Objekten erstellt habe, die quasi neben allen anderen verläuft und so von allen Schichten her zugänglich ist.

Wie macht ihr das?

Lg
Dani

11.05.2007 - 11:31 Uhr

Wenns am Verständnis fehlt, was eine Klasse ist:
Schau zum Fenster raus, finde raus was du für "Objekte" siehst, und was für Eigenschaften und Funktionen diese haben... (Auto, Baum, Blume, Biene usw.)

10.05.2007 - 16:05 Uhr

Dictionary<string, int>

10.05.2007 - 10:25 Uhr

Original von sattlt
ich finde keine Funktion, die mir den realen Pfad zurückgibt.

Salve Sattler

Ohne jetzt wirklich zu verstehen, was du da machen willst, um obige Frage zu beantworten:


string path= Server.MapPath("~/image/bild.gif");

10.05.2007 - 09:19 Uhr

Also ich war ja auch einer der sich an den snippets in der "Neue Beiträge"-Ansicht störte... aber ich finde bei der "Masse" die da aktuell auftritt, ist das Problem mehr ein theoretisches und vernachlässigbar.

Eine selektive "Neue Beiträge"-Ansicht wär natürlich ein tolles Feature, allerdings finde ich auch das nicht unbedingt notwendig. Ich zum Beispiel habe ein grundsätzliches Interesse an allen Foren (wenn auch nicht überall gleich hoch), und möchte entsprechend auch gerne sehen, was in diesen läuft.

09.05.2007 - 14:27 Uhr

Doppeltes++ Gehalt? Worauf wartest du nocht? 😉

Nein im ernst, die Tatsache, dass das neue Gehalt derart massiv über deinem jetzigen ist, deutet ja irgendwo daraufhin, dass irgendwo etwas nicht ganz stimmt:

  • entweder du bist jetzt absolut krass unterbezahlt, dann hast du sicherlich die Option zu deinem jetzigen Boss zu gehen. Kannst ja auch gleich erwähnen, dass du konkrete Angebote vorliegen hast.

  • die andere Firma braucht dringend Leute für zB. anstehende Projekte. Beim jetzigen Arbeitsmarkt, werden da die Gehälter schon mal etwas gepushed. Stellt sich dann jedoch immer die Frage, wie langfristig das ganze ist. Das kannst du schlussendlich nie wirklich sagen, aber du kannst dir einen Eindruck verschaffen.

Meine Meinung: Wenn du bei der anderen Firma ein gutes Gefühl hast, würde ich es wagen. Wenns rein nur vom Geld abhängig ist, eher nicht. Wenn dein Marktwert in dieser Region ist, kriegst du das auch woanders, bzw. kannst du deinen jetzigen Lohn auch in diese Richtung treiben.

08.05.2007 - 10:44 Uhr

Original von w1z4rd2003
ich möchte die grösse eines anhangs auslesen, suchte in der msdn ob es eine eigenschaft gibt die mir diesen wert zurück gibt aber habe leider keine gefunden.

Da hast du beim suchen zu wenig Fantasie bewiesen 😁

System.Net.Mail.Attachment at = new System.Net.Mail.Attachment();
            long size = at.ContentStream.Length;
07.05.2007 - 23:57 Uhr

Wenn es darum geht, Ideen zu skizieren, sollte der Fokus möglichst wenig auf den Mitteln und viel mehr auf den Ideen selbst liegen. Das ist mit den meisten Programmen, auch Visio, meiner Meinung nach schlicht unmöglich.

Statt spannende Ideen weiterzuspinnen, ist man mehr mit den Tücken des Programms beschäftigt.

Für MindMaps muss ich allerdings sagen, favorisiere ich den MindManager gegenüber der Handskizze. Ist einfach einfacher Äste zu verschieben etc.

07.05.2007 - 23:37 Uhr

Hi Master moe

Deine Frage ist etwas allgemein formuliert, was die Beantwortung erschwert (Wie poste ich richtig?.

Wo liegen die Probleme? Was hast du bereits umgesetzt? etc.

04.05.2007 - 13:50 Uhr

Original von MS Master
hm, aber eine leere Schleife sorgt ja nicht zwangsläufig dafür, das damit das System voll ausgelastet wird.

Deswegen war ja meine frage, ob evtl jemand schon einge z.b. Mathematische Berechnung hat, die das System ziemlich belastet, welche man dann in die schleife packen könnte.

Wie gesagt, das spielt doch keine Rolle.
Der Unterschied liegt nur darin, wie oft diese Aktion ausgeführt werden kann...
Wenn du eine Aktion machst, die ~1 sek. braucht, kann diese halt nur 10 mal in 10 Sekunden ausgeführt werden, wenn die Aktion 0.1 sek. braucht, wird sie halt 100 mal ausgeführt. Die CPU macht so schnell sie kann und geht zur nächsten Aktion.

04.05.2007 - 11:08 Uhr

Original von MS Master
Und zum 1. Punkt: Es soll ja nicht endloss lange gehen, den sonst hätte man je nachdem ja Probleme das wieder zu stoppen.

Naja ob endlos lange, bis Abbruch oder über eine definierte Zeit spielt ja keine Rolle, musst halt einfach die Abbruchbedingung entsprechend setzen.

04.05.2007 - 10:23 Uhr

Original von MS Master
Und dann noch eine frage: Gehe ich dann recht in der Annahme, das wenn ich einen entsprechenden Task, der die o.g. Anforderungen erfüllt z.b. 2x Starte, das dann auf einem Dual-Core beide CPUs zu 100% ausgelastet währen?

Ja das Verhalten ist so - hab ich erst kürzlich eher unfreiwillig bemerken müssen. X(

04.05.2007 - 10:22 Uhr

Naja einfach ne Endlosschleife krachen lassen... die Aktion die darin ausgeführt wird, ist sekundär, solange es nur darum geht die Auslastung auf 100% zu jagen. Die CPU macht ja dann einfach soviele Schleifendurchgänge wie nur geht... also 100% =)