Laden...

Profil von Sieben

myCSharp.de - Member Mitglied seit

Alle Beiträge

27.04.2022 - 11:47 Uhr

Hast übersehen, als Du dort gepostet hast? 🙂

Ja ;D

Wobei der Tomasfil ja scheinbar immer noch das Problem hat und seine Anwendungen laufen scheinbar mehrere Tage/Wochen am Stück?!

27.04.2022 - 11:38 Uhr

Okay, außerhalb von Visual Studio tritt dieses Problem nicht auf. Also, Release gebaut, die Exe gestartet, Speicher bleibt im grünen Bereich. Es scheint also ein Visual Studio Problem beim Debuggen zu sein.

Thread kann daher geschlossen werden 🙂

Vielen Dank an alle Helfer!

27.04.2022 - 10:52 Uhr

Ich habe mein Code angepasst und die Liste wird jetzt geleert und neu befüllt. Leider gleiches Ergebnis.

Ich habe im WPF Github den Issue gefunden - traurig 🙁

27.04.2022 - 10:20 Uhr

Hab mein Code angepasst (DispatchTimer und GC), leider keine Änderung. Es werden immer noch jede Menge neuer Objekte generiert

27.04.2022 - 09:10 Uhr

Ich habe im Visual Studio die Memory Usage ausgeben lassen und dort steigt der Speicher beständig an, siehe angehängte Bilder.
Ich vermute das es irgendwelche Bindings sind, die nicht ausgeräumt werden?!

27.04.2022 - 08:20 Uhr

Hallo zusammen,

ich habe eine ListView die per ItemSource eine ObservableCollection bindet. Die ObservableCollection wird alle 2 Sekunden aktualisiert.
Dabei entstehen bei jeder Aktualisierung sehr viel neue WeakReference Objekte die nicht mehr abgebaut werden 🙁

Hier ist das ViewModel


public class SomeString : BaseViewModel
  {
    public SomeString ( string test )
    {
      m_test = test;
    }

    private string m_test = "AAA";

    public string SomeTest
    {
      get => m_test;

      set
      {
        m_test = value;

        OnPropertyChanged ( nameof ( SomeTest ));
      }
    }
  }

  public class MainWindowViewModel : BaseViewModel
  {
    public ObservableCollection<SomeString> SomeList { get; set; } = new ObservableCollection<SomeString> ();

    private Timer m_timer;

    public MainWindowViewModel ()
    {
      m_timer = new Timer ( new TimerCallback ( TimerCallback ));

      m_timer.Change ( 2000, 0 );
    }

    private void TimerCallback ( object state )
    {
      SomeList = new ObservableCollection<SomeString> ();

      SomeList.Add ( new SomeString ( "AAA" ));
      SomeList.Add ( new SomeString ( "BBB" ));
      SomeList.Add ( new SomeString ( "CCC" ));

      OnPropertyChanged ( nameof ( SomeList ));

      m_timer.Change ( 2000, 0 );
    }
  }

Hier ist das XAML dazu


<Window  x:Class="WPFTestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFTestApp"
        xmlns:vm="clr-namespace:WPFTestApp.ViewModels" xmlns:views="clr-namespace:WPFTestApp.Views"
        mc:Ignorable="d"
        Title="MainWindow" Height="700" Width="800">
  <Window.DataContext>
    <vm:MainWindowViewModel x:Name="ViewModel"></vm:MainWindowViewModel>
  </Window.DataContext>

  <Grid>
    <ListView ItemsSource="{Binding SomeList, Mode=OneWay}">
      <ListView.View>
        <GridView>
          <GridViewColumn Header="Text" DisplayMemberBinding="{Binding SomeTest, Mode=OneWay}" Width="200"></GridViewColumn>
        </GridView>
      </ListView.View>
    </ListView>
  </Grid>
</Window>

Mach ich hier irgendwas falsch was die Bindings betrifft?

Es ist eine .NET 6.0 WPF Application

Viele Grüße
Sieben

Hallo,

ich suche eine Möglichkeit, mit der man sich alle am Computer angeschlossenen Sounddevices (PCI Soundkarten, USB Soundkarten) auslesen kann?!

Weiterhin such ich eine Möglichkeit mit der man feststellen kann, ob auf einen bestimmten Sounddevice zur Zeit Sound abgespielt wird?!

Kann jemand helfen?

gruß Sieben

21.07.2009 - 22:10 Uhr

Wollte nur mal Fragen ob man den ColorSlider auch selbst verwenden darf?

LG Karim

Joa ich denke schon, den ColorSlider hab ich von CodeProject.

@64Bit
Jap, das gleiche Problem hatte ich auch bis vor kurzem.
Da ich bisher nur 32 Bit Betriebssysteme verwendet hatte ist mir das gar nicht aufgefallen 😉

Ich hab grad ein neues Release hochgeladen wo einige Änderungen und Verbesserung schon enthalten sind.
Mittlerweile geht auch Drag and Drop sowie Parameterübergabe.
Hakt allerdings noch an der ein oder anderen Stelle 😉
Das Release sollte auch mit Windows 7 und 64 Bit zurecht kommen 😃

gruß Sieben

01.04.2009 - 15:08 Uhr

Hey super Arbeit das Spiel gefällt mir.

Ich fände es noch komfortabler wenn die Punkte angezeigt würde die man mit der jetzigen Konstellation er würfelt hat. Beispielsweise wenn man mit der Maus auf den Bleistift Button geht, wird die Punktzahl in roter Schrift in dem Feld angezeigt.

Eine Highscore wäre wirklich super.
Da du ja den Source mitgeliefert hast, darf man diesen verändert??

gruß Sieben

24.02.2009 - 17:42 Uhr

Ok Livecycle hin und Livecycle her, das Problem bleibt trotzdem bestehen 😦

Ich hab jetzt mal die 'OnLoadComplete' Methode überschrieben um mein Layout zu machen. Das Problem dabei ist, das alle Controls die ich in der 'OnLoadComplete' hinzugefügt habe, ihre Werte nicht mehr speichern. Nur die Controls die vor der 'OnLoadComplete' 'Livecyclehierachie' geadded wurden behalten ihre Werte?

Zur Veranschaulichung: Grün eingekreist sind die vor 'OnLoadComplete' hinzugefügten Controls rot eingekreist die nach 'OnLoadComplete'.

23.02.2009 - 23:33 Uhr

Man ich bin einfach zu blöd!!!

Man sollte schon in die richtige Methode schauen schäm


protected void btnOnChange_Click ( Object Sender, EventArgs e )
{
  String Str = m_ctrlTextbox.Text; // Hier wird der Text richtig angezeigt

  int k = 4711;
}

In der Eventhandler Methode hat die Textbox natürlich den gesuchten Wert. Ich habe immer in die 'Page_Load' Methode rein debuggt.

Das heißt ja:
1.ASP ruft zuerst die 'Page_Load' Methode auf -> Instanzierung aller Controls.
2. Dann füllt ASP alle Controls mit bekannter ID mit Werten aus dem Response.
3. Event-Methode wird aufgerufen

???

Wenn das so ist, dann hab ich allerdings ein Problem: Denn in 'MakeLayout' die von 'Page_Load' aufgerufen wird, benötigt den Wert aus der 'TextBox' um das dynamische Layout zu designen?? 😦

gruß Sieben

23.02.2009 - 23:21 Uhr

Ich hab jetzt mal eine ganz einfache Seite gemacht.

Dort habe ich eine Textbox im Codebehind erzeugt und sie dort per 'form1.Controls.Add (...)' hinzugefügt. Dort funktioniert sie auch so wie sie soll 😃

Bei der anderen Seite funktioniert es leider immer noch nicht.

Ausganglage:

Es ist eine 'WebContentForm'. Auf dieser habe ich per Designer eine 'Asp.Table' mit der 'ID=LayoutTable' hinzugefügt:


  <asp:Table ID="LayoutTable" runat="server">
  </asp:Table>

Dieser füge ich dann im Codebehind 'MakeLayout ()' mehrere Rows und Cells hinzu:


    TextBox m_ctrlTextbox;

    protected void Page_Load ( object sender, EventArgs e )
    {
      m_ctrlTextbox = new TextBox ();
    }

    protected void MakeLayout ()
    {
      LayoutTable.CssClass = "VxBetTable";

      {
        TableRow  Row       = GetStdTblRow  ();
        TableCell Cell1     = GetStdTblCell ();

        Label   lblText     = new Label     ();
        Button  btnOnChange = new Button    ();

        lblText .Text = "Anzahl Spiele: ";

        m_txtGames.MaxLength = 2;
        m_txtGames.Width     = 20;

        btnOnChange.Text = "Ändern";

        btnOnChange.Click += new EventHandler ( btnOnChange_Click );

        Cell1.ColumnSpan = 5;

        Cell1.Controls.Add ( lblText       );
        Cell1.Controls.Add ( m_ctrlTextbox );
        Cell1.Controls.Add ( btnOnChange   );

        Row.Cells.Add ( Cell1 );

        LayoutTable.Rows.Add ( Row );
      }

      {
        TableRow  Row   = GetStdTblRow ();

        Row.CssClass = "VxBetRow";

        TableCell Cell1 = GetStdTblCell ();
        TableCell Cell2 = GetStdTblCell ();
        TableCell Cell3 = GetStdTblCell ();
        TableCell Cell4 = GetStdTblCell ();
        TableCell Cell5 = GetStdTblCell ();

        Cell1.Text = "Datum";
        Cell2.Text = "&nbsp;";
        Cell3.Text = "Heimteam";
        Cell4.Text = "&nbsp;";
        Cell5.Text = "Auswärtsteam";

        Row.Cells.Add ( Cell1 );
        Row.Cells.Add ( Cell2 );
        Row.Cells.Add ( Cell3 );
        Row.Cells.Add ( Cell4 );
        Row.Cells.Add ( Cell5 );

        LayoutTable.Rows.Add ( Row );
      }

      {
        for ( int nIndex = 0; nIndex < m_Games; nIndex++ )
        {
          TableRow  Row   = GetStdTblRow ();

          Row.CssClass = "VxBetRow";

          TableCell Cell1 = GetStdTblCell ();
          TableCell Cell2 = GetStdTblCell ();
          TableCell Cell3 = GetStdTblCell ();
          TableCell Cell4 = GetStdTblCell ();
          TableCell Cell5 = GetStdTblCell ();

          //----------------------------------------------------------------------

          Calendar Cal = new Calendar ();

          DropDownList ddlHomeTeam = new DropDownList ();
          DropDownList ddlAwayTeam = new DropDownList ();

          for ( int nJndex = 0; nJndex < m_TeamList.Count; nJndex++ )
          {
            TeamItem Item = m_TeamList [ nJndex ];

            ddlHomeTeam.Items.Add ( Item.TeamName );
            ddlAwayTeam.Items.Add ( Item.TeamName );
          }

          //----------------------------------------------------------------------

          TextBox txtDay   = new TextBox ();
          TextBox txtMonth = new TextBox ();
          TextBox txtYear  = new TextBox ();
          Label   lbl1     = new Label ();
          Label   lbl2     = new Label ();

          txtDay.MaxLength = 2;
          txtDay.Width = 20;
          txtMonth.MaxLength = 2;
          txtMonth.Width = 20;
          txtYear.MaxLength = 4;
          txtYear.Width = 40;

          lbl1.Text = ".";
          lbl2.Text = ".";

          Cell1.Controls.Add ( txtDay );
          Cell1.Controls.Add ( lbl1 );
          Cell1.Controls.Add ( txtMonth );
          Cell1.Controls.Add ( lbl2 );
          Cell1.Controls.Add ( txtYear );
          Cell2.Text = "::";
          Cell3.Controls.Add ( ddlHomeTeam );
          Cell4.Text = "-";
          Cell5.Controls.Add ( ddlAwayTeam );

          Row.Cells.Add ( Cell1 );
          Row.Cells.Add ( Cell2 );
          Row.Cells.Add ( Cell3 );
          Row.Cells.Add ( Cell4 );
          Row.Cells.Add ( Cell5 );

          LayoutTable.Rows.Add ( Row );

        }
      }

      {
        TableRow Row = GetStdTblRow ();

        TableCell Cell = GetStdTblCell ();

        Cell.HorizontalAlign = HorizontalAlign.Right;
        Cell.ColumnSpan = 5;

        Button BtnOnSend = new Button ();

        BtnOnSend.Text = "Speichern";

        Cell.Controls.Add ( BtnOnSend );

        Row.Cells.Add ( Cell );

        LayoutTable.Rows.Add ( Row );
      }
    }

Mein Problem ist nach wie vor, das ich nicht auf die Controls, die ich in 'MakeLayout ()' erzeuge und der 'LayoutTable' hinzufüge, zugreifen kann? Die besagte Textbox ist momehtan ein Member der Klasse heißt 'm_ctrlTextBox' und wird in 'Page_Load' instanziiert.

Der Unterschied zu meinem ersten Beispiel ist zweifelsohne, das ich die Textbox dort der 'form1' dirket zuweise?

Müsste nicht die 'LayoutTable' automatisch von Asp einer Form zugewiesen werden? Es ist ja eine ContentPage? Zudem mit dem Attribut 'runat=Server'?

gruß Sieben

23.02.2009 - 22:50 Uhr
  
class mypage  
{  
   protected Control m_MyTextBox;  
   protected override void OnInit(...)  
   {  
      m_MyTextBox = new Textbox();  
      Page.Controls.Add(m_MyTextBox);  
   }  
}  
  

Wenn ich das so mache, dann speichert die Textbox keine Werte. Wenn ich per Button den Event auslöse, ist der eingegebene Wert der Textbox weg?!

Bei jedem Seitenaufruf wird auch immer ein neues Textbox Objekt angelegt? Das kann es ja auch nicht sein, ist ja klar das der Wert dadurch verloren geht?!

Genau das passiert ja im Designermodus nicht, dort behält die Textbox ihren Wert nach dem Buttonklick?

gruß Sieben

23.02.2009 - 13:56 Uhr

Hi ihr 3,

erstmal danke für die Antworten. Ich konnte am Wochenende leider nix machen, deswegen schreib ich erst jetzt.

Ich baue die Tabelle mit den Controls genauso auf wie Syst3m es geschrieben hat. Also in der Page_Load per Methoden Aufruf.

Wenn ich die Textbox dynamisch hinzufüge, muss ich dann immer mit FindControls arbeiten? Wenn ich die Textbox, per Designer ( VS 2008 ) auf die '*.aspx' Datei ziehe dann kann ich sie ja im Codebehind direkt als Member ansprechen?
Geht das auch wenn ich die Textbox dynamisch hinzufüge, quasi wenn ich sie zum Member der Klasse machen?

FindControls hatte ich schon probiert, da hat er keine Textbox gefunden? Liegt das an einer falschen ID?
Den zweiten Parameter von FindControls versteh ich nicht?

Ich werde heut abend nochmal das FindControl probieren.

Nochmal kurz zu meinem Vorhaben:
Auf einer Aspx Seite sollen eine Textbox + Button angezeigt werden. In die Textbox kann man eine Zahl eingeben. Je nachdem welche Zahl man eingegeben hat, sollen auf dieser Seite in einer Schleife weitere Dynamische Controls erzeugt werden.

gruß Sieben

20.02.2009 - 19:02 Uhr

Hi,

ich hab ein Problem mit einer Dynamischen Textbox.

Ausgangslage:

Ich habe im Designer eine Tabelle angelegt, diese befülle ich im Code-Behind mit TableRows und TableCells. In einer Celle erzeuge ich auch eine Textbox und einen Button, dem ich einen Event zuweise. Die Textbox und der Button werden auch wunderbar im Html angezeigt, wenn ich allerdings auf den Button klicke, komme ich nicht an den Wert der Textbox heran?

Was mache ich falsch?

gruß Sieben

Boah jetzt habi des verstanden, des is ja geil 😄

Ich schreib im Aspteil 'div' Elemente mit 'Runat=Server' und er generiert mir im Hintergrund ein 'HtmlGenericControl' was ich dann in der abgeleiteten Page Klasse als Member ansprechen kann und dort die Eigenschaften verändern kann.

So funktionieren dann wohl alle Asp-Controls. Dat find ich super, ich dacht schon ich müsst den Response-Kram schreiben 😉

Joa mir fehlen da wohl wirklich ein paar Basics, hab bisher leider keine gute Einführung in ASP.net gefunden 😦

Trotzdem noch mal vielen Dank für die Aufschlussreichen Antworten 😃

gruß Sieben

Hm... ist dann "ErsteAusgabe" eine Methode in der Klasse? Dann muss ich in dieser Methode Htmlcode mit "Response.Write" schreiben, oder?

Hi,

ich habe eine Seite, die je nach einer bestimmten Bedingung unterschiedliches Html ausgeben soll. Mir fällt da momentan nur diese Lösung ein, die ich aber doof finde, da es jetzt Logik im Htmlteil gibt. Kann man das ganze irgendwie anders lösen?


<%@ Page Language="C#" MasterPageFile="~/Html/VxBet.Master" AutoEventWireup="true" CodeBehind="Tipp.aspx.cs" Inherits="VxBet.Html.Tipp" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

<%
if ( bedingung )
{
  %>
  Erste Ausgabe mit Html
  <%
}
else
{
  if ( bedingung 2 )
  {
    %>
    Zweite Ausgabe mit Html
    <%
  }
  else
  {
    %>
    Dritte Ausgabe mit Html
   <%
  }
}
%>

gruß Sieben

12.01.2009 - 09:29 Uhr

Hi icedre,

Das an/ausschalten der Buttons für "Wiederholen" und "Zufall" funktioniert noch nicht so ganz:

hm... inwiefern funktioniert das nicht?

Also bisher ist es so, das wenn man den 'Wiederholen' Button Klickt, dieser eingedrückt bleibt. Damit wird signalisiert, das nach Ende der Playliste wieder automatisch von vorne angefangen wird.

Der Shuffle Button dagegen, Shufflet im Moment nur die Liste durch und kann nicht eingedrückt werden.
Dazu muss ich noch sagen, das ich einen anderen Shuffle Modus, als 'normal' eingebaut habe. Da mir die heutigen Shuffle-Modi nicht gefallen:
-es werden immer die gleichen Lieder angespielt
-es werden unter Umständen nicht alle Lieder angespielt
Shuffle ich nur die Liste und geh dann von Anfang bis Ende in anderer Reihenfolge durch. Somit werden immer alle Titel gespielt, aber die Reihenfolge ist jedesmal anders.

gruß Sieben

06.01.2009 - 22:56 Uhr

Neues Jahr, neuer Chocochino 😃

Ich hab den Chocochino überarbeitet und die Funktionsweise ein bisle geändert:

Es gibt jetzt 2 Views:

  1. TreeView mit Dateisystem
  2. TreeView für Datenbank mit Playlisten

In dem 1ten View kann man einzelne Mp3s aber auch ganze Ordner zur Datenbank hinzufügen. Gleichzeitig ist es dort schon möglich die Mp3s anzuhören.
Um Ordner zur Datenbank hinzufügen einfach einen Rechtsklick auf den Ordner im TreeView und 'Hinzufügen zu -> Datenbank' auswählen

In dem 2ten View werden die Datenbank und die Playlisten in einem TreeView angezeigt. Dort ist es möglich die aktuelle Auswahl zu sortieren und zu filtern.
Zum sortieren einfach auf die Spaltenköpfe der Liste klicken. Zum Filtern einfach einen Begriff eingeben und die entsprechende Checkbox auswählen. Wenn man Suchbegriffe mit einem ';' trennt, kann man auch mehrere Suchwörter eingeben.
Mit einem Rechtsklick in die Liste kann man auch jederzeit die Titel in eine Playliste einfügen lassen.

Um die Playlisten zu verwalten gibt es noch einen Playlisten Manager, dort kann man Playlisten anlegen, löschen und Titel hinzufügen sowie entfernen.

Was noch arg verbesserungswürdig ist, ist die Benutzersteuerung da wäre ich für ein paar Vorschläge dankbar 😃


Hallo Sieben,

einige Bugs / Verbesserungswünsche:

...

Hoffe ich konnte dir einige Anregungen geben. Sieht schon ganz gut aus! 😃

Viele Grüße,

Hi moq,

danke für deine Bugmeldungen und Verbesserungswünsche. Ich hab schon einige davon umgesetzt andere sind noch in Arbeit 😃

  • Der Titel / Artist des aktuellen Stücks "ändert" sich bei Sortierung der Tabelle. Genauer gesagt, dass Label.
    (MP3 abspielen -> dann z.B. nach Titel sortieren -> Titel / Artist ändert sich auf den ersten und automatisch selektieren Eintrag in der Tabelle)

Sollte behoben sein 😃

  • Komplette MP3 Ordner zur Playlist hinzufügen wäre toll! Leider kann man nur einzelne bzw. mehrere MP3's zur Playlist hinzufügen, aber keine kompletten Ordner.

Kann man jetzt über die Dateibaumansicht. Leider geht das ganze noch nicht Rekursiv 😦

  • Beim Hinzufügen von MP3's sollte noch abgefangen werden ob es sich um eine MP3 Datei handelt. Wenn man versucht etwas anderes zur Playlist hinzuzufügen bsp: JPG/TXT stürzt das Programm ab. Ohne Fehlermeldung.

In der Dateibaumansicht werden jetzt nur noch unterstützte Dateien angezeigt

  • Drag'n' Drop wäre nett. Bsp. aus dem Explorer eine MP3 zur Playlist hinzufügen.

Drag 'n' Drop ist noch ein bisle Buggy, momentan fügt er die Mp3s nur zur Datenbank hinzu. Später soll es aber auch für Playlisten funktionieren

  • Shortcuts. Bsp. STRG + O Öffnen, etc.

Werden noch eingebaut.

  • Playlist -> HTML.

Hm... dazu eine Frage, wie soll die Html Seite dazu aussehen?

  • Wenn man beim letzten Stück (bsp. #3) der Playlist ist und auf > klickt, springt er nicht wie erhofft zum ersten Eintrag.

Sollte behoben sein

  • Es ist möglich in der "Playlist Verwaltung" Playlists ohne Namen (leerer "Playlistname") hinzuzufügen.

Sollte behoben sein

  • Es wäre schön wenn man in der "Playlist Verwaltung" mehrere Einträge selektieren könnte um sie bsp. zu löschen.

Sollte behoben sein

  • Beim Exportieren einer Playlist ins M3U Format sollte man einen Pfad + Dateinamen angeben können.

Momentan ist die Export und Import Funktion nicht aktiv, wird aber gemacht

  • Die verwendeten Libraries sollten in einen eigenen Ordner gepackt werden und nicht im Root Verzeichnis der Anwendung sein. Bsp. Chococino\libs.

Ok, wird noch umorganisiert


Hier der Link zum Download

Download

gruß Sieben

28.10.2008 - 22:33 Uhr

Ein Feuerwerk 😁

27.10.2008 - 22:12 Uhr

CPU:         Intel Core 2 Quad 9450 @ 2800 Mhz
Mainboard:   MSI P35 Neo 2 FIR
RAM:         4GB Infineon
Grafikkarte: Asus EAH 3870 Top ( Ati )
Netzteil:    Be Quiet! 50 Watt
Tastatur:    Vivanco Office Keyboard + ZBoard MERC Stealth
Maus:        Logitech MX 510 + Logitech Optical Premium
Monitor:     Fujitsu Siemens Scaleoview x22w-i + Samsung Syncmaster 755dfx
HDD:         3x 250 GB Seagate Barracuda

06.08.2008 - 18:16 Uhr

Huhu,

ich suche ein ListView-Control mit Fußzeile. Kennt jemand so ein Control?

Wie könnte man so eine Fußzeile realisieren, mir fällt da im Moment nix ein ?!
Die Fußzeile müsste ja immer am unteren Rand der Liste gezeichnet werden ?!

gruß Sieben

24.07.2008 - 15:59 Uhr

ich bin prinzipiell für solche dinge offen aber ich (und sicherlich auch andere) habe keine lust mich durch 2400 zeilen hochredundanten, unstrukturierten und unkommentierten code zu arbeiten, damit ich erstmal verstehe was zu machen ist.

Keine genau das gleiche denke ich auch. Du hast ja nicht mal selber Lust das ganze zu machen,

gruß Sieben

25.06.2008 - 18:21 Uhr

Huhu!

Ich würde das Result Objekt der Query Funktion mit If auf gültigkeit überprüfen dann bekommst du auch die Fehler mit:

[php]
function checkUserDaten($name, $pass)
{
$b = false;
$db = connect();

$result = mysql_query("SELECT logname, password, Id from TSMClientDaten WHERE logname='"+ $name +"' LIMIT 0,1");

if ( $result )
{
$menge = mysql_num_rows($result);

if($menge &lt; 1)   
{  
  return false;  
}  

}
else
{
$SQLFehler = "(".mysql_errno ()." ) ".mysql_error ();
}
[/php]

mhh ich glaub ihr habtr die situation falsch gedeutet: ...

Ich weiß nicht, aber du solltest vielleicht deine Benutzersteuerung umbauen anstatt mit irgendwelchen Hacks zu versuchen dein Programm abzusichern:

Ich würde ein Wechseln des Profils nur zulassen wenn alle anderen Dialoge geschlossen sind.

Bei 3maliger Falscheingabe würde ich das Programm nicht beenden, sondern alle Menüpunkte deaktivieren.

Das Programm zu beenden bringt nämlich relativ wenig da clevere Bruteforcer das Programm einfach wieder öffnen würden.

Dazu kommt die Problematik das man C# Code dekodieren kann und somit sämtliche Hinderungsmaßnahmen unschädlich machen kann.

Wenn du was sicheres suchst, stellst du dir ein entfernten Server hin der die Logins mitzählt und den Login nach 3 Versuchen sperrt, so wie es im WWW gemacht wird.
Alles andere ist der Versuch die 'Knackzeit' zu verlängern.

gruß Sieben

Ich hoff der Wetteinsatz für dich war net zu groß?? 🤔 🤔 🤔 🤔

26.05.2008 - 19:21 Uhr

Hier gibts welche http://www.teletrader.com/ die haben glaub ich auch ne Webservice Schnittstelle

gruß Sieben

26.05.2008 - 14:57 Uhr

Naja die Fehlermeldung sagt doch schon viel aus. Ich denke er konnte die Klasse nicht finden die du in dem String angegeben hast.

Entweder du hast nen Tippfehler oder es fehlt eventuell ein Namespace

05.05.2008 - 16:06 Uhr

Sollte das nicht auch mit einer Prüfung auf NULL gehen??


if ( EventHandler == null )
{
  EventHandler += MyEvent ( ... )
}

Erstmal danke für die vielen Antworten.

Ich denke auch das die Lösung von Qwald stimmt.

Vom Prinzip her ein wirklich sehr simpler Algorithmus, der Kniff an der Sache ist die Speicherung der Daten in dem 2 Dimensionalen Array... da bin ich irgendwie nicht drauf gekommen X( X(

gruß Sieben

Huhu,

unsere Azubis haben grad ne Prüfungsaufgabe rausgekramt und haben mich nach einer Lösung gefragt:



Array Sonnenstunden:

PLZ | Sonnenstunden

... 50606 | 1200 51491 | 1100 ...

Erstellen Sie einen Algorithmus für die Funktion holeSonnenstunden (), welche die Sonnenstunden eines
Postleitzahlenbereichs aus dem zweidimensionalen Array Sonnenstunden liefert. Der Übergabeparameter ist eine PLZ
( Darstellung Pseudocode, PAP oder Struktogramm )

Hinweis:
-Die Zeilen des Arrays sind nach Postleitzahlen aufsteigend sortiert
-Wird die Übergebene PLZ im Array nicht gefunden, so soll die Sonnenstundenzahl der nächstkleineren PLZ verwendet werden
-Ist die eingegebene PLZ kleiner als die kleinste im Array vorhandene PLZ wird -1 zurückgegeben.



Ich probier seit 30 Minuten und komm auf keinen grünen Zweig! Das geht doch gar nicht, wie wollen die denn die Daten speichern als Zweidimensionales Array??

Hat jemand vielleicht einen Lösungvorschlag??

gruß Sieben

quasi so,


FormClosingEventHandler Handler = delegate (Object sender, FormClosingEventArgs e)
{
  // Tu was anständiges
};

m_Dlg.FormClosing += Handler;

...

m_Dlg.FormClosing -= Handler

das Funktioniert. Danke.

@ANSI_CODE

wäre wohl auch ne Lösung, aber reinster Horror 😉

gruß Sieben

Huhu,

wenn ich an einem Event einen anonymen Delegaten registriere, muss ich diesen dann auch wieder deregistrieren?? Und wenn ja, wie macht man das?


m_Dlg.FormClosing += delegate (Object sender, FormClosingEventArgs e) 
{
  // Tu was anständiges
};

m_Dlg.FormClosing -= delegate (Object sender, FormClosingEventArgs e); // geht nicht

Stirbt in dem Fall auch der anonyme delegate, wenn das Fenster stirbt?

gruß Sieben

Hm... also gefüllt wirds soweit richtig. Und eigentlich kann das ja nicht sein. Bist du sicher, das die Funktion


myFtpToucher.DateienAuflisten

dir die Richtigen Daten bringt??

gruß Sieben

13.03.2008 - 12:40 Uhr

Huhu,

wollte mal fragen ob hier jemand Handys kennt, wo das .Net Framework drauf ist.
Müssen dies Handys sein, wo zwingend Windows Mobile drauf installiert ist??

gruß Sieben

Also, ich hab ja nicht behauptet das dies die ultimative Lösung ist, sondern das es so geht. Ob man das nun so macht, oder wie Herbivore ist mir eigentlich egal bin da ganz neutral.

Mir geht es eher um die theoretischen Möglichkeiten die das .Net Framework bietet. Da finde ich es net schlecht, wenn man mehrere Lösungsvorschläge zu einem Problem hat.


Ok, new sollte man in diesem Falle nicht verwenden. Jetzt wäre dann aber meine Frage, wann und wo verwendet man new??

gruß Sieben

@Neurocoder
Ah danke, gutes Beispiel. Alle Klarheiten beseitigt 😁 😉
Macht auch Sinn dieses verhalten.

[EDIT]

Dies geht aber:



  ...
  public void Xxx ()
  {
      C c = new C ();
      A a = ( A )c;
      a.Foo ();
  }
  ...


  class A
  {
    public virtual void Foo () { /* tu was anders */ }
  }

  class B : A
  {
    public new virtual void Foo () { /* tu was anders */ }
  }

  class C : B
  {
    public new virtual void Foo () { A a = ( A ) this; a.Foo ();/* tu was anders */ }
  }


Huhu würde nicht soetwas gehen



  ...
  public void Xxx ()
  {
      C c = new C ();
      A a = ( A )c;
      a.Foo ();
  }
  ...


  class A
  {
    public virtual void Foo () { /* tu was anders */ }
  }

  class B : A
  {
    public override void Foo () { /* tu was anders */ }
  }

  class C : B
  {
    public override void Foo () { A a = ( A ) this; a.Foo ();/* tu was anders */ }
  }


[EDIT]
hm... kein Compiler-Fehler aber eine Stackoverflow Exception 😁 😁

gruß Sieben

04.03.2008 - 17:18 Uhr

Warum wird denn immer gleich auf ein Dictionary Object verwiesen?! *grübl

Zum durchsuchen einer Liste kannst du BinarySearch verwenden.
Dazu benötigt du nur einen Selbstgeschriebenen IComparer und schon kanns losgehen.
Den IComparer kannst du sogar typen und sparst dir den Cast.


class MyComparer : IComparer<MyObject>
{
  int Compare ( MyObject Obj1, MyObject Obj2 )
  {
    Obj1.id.CompareTo ( Obj2.id );
  }
}

class AClass
{
  public void AFunction ()
  {
    List<MyObject> MyList = new List<MyObject> ();
    ...

    int nIndex = MyList.BinarySearch ( 2, new MyComparer ());

    MyObject Obj = MyList[nIndex];
  }
}


gruß Sieben

03.03.2008 - 14:58 Uhr

Hm... also wenn ich das bei mir so einstelle wie auf dem Bild, das er in einen eigenen Ordner
druckt, dann Poppt der FreePDF Dialog nicht mehr auf.
Eventuell musst du auf der FreePDF Startseite das Profil einstellen.
Bzw einen eigenen Drucker einrichten.

Timer sind ganz einfach zu benutzen, das ganze kannst du Hier nachlesen.

Einfach einen Timer starten, das Event des Timers abonnieren und wenn das Event auftritt deine Datenbank aufrufe machen und eventuell den Timer anhalten.

gruß Sieben

28.02.2008 - 16:20 Uhr

Siehe Edit 😉

Was würdest du denn machen wenn jetzt nicht nur Deutsch und English, sondern noch Französich hinzukommt und diese Übersetzungen quer gemischt werden:
Also mal Englisch - Deutsch, mal Deutsch - Französisch oder Englisch - Französisch? 😉

gruß Sieben

28.02.2008 - 16:11 Uhr

@jaensen

Ist diese Lösung nicht ein bisle überdimensioniert?

Da braucht er alleine 4 Collections für eine Aufgabe.

[Edit]

@Sieben:
Das würde zwar das zufällige ausgeben der Vokabeln erleichtern aber die vergleiche ob eine eingegebene Vokabel richtig ist erfordert jedes mal eine Suche über die ganze Liste. Für die Vokabel müsste man keine eigene Klasse bauen ein KeyValuePair wäre meiner Meinung nach treffender.

Nicht unbedingt, da er sich ja zufällige eine Vokabel aus der Liste holt und somit ein 'Vocable' Objekt besitzt wo die Wörter für Deutsch und English drin steht. Er braucht sich dieses Objekt nur temporär merken und anschließend vergleichen. Man könnte sogar noch das 'Vocable' Objekt um die Prüfung aufbohren ob die Eingabe Richtig ist.

Alternativ gäbe es dann noch die Möglichkeit mittels 'BinarySearch' die Liste gezielt zu durchsuchen.

gruß Sieben

28.02.2008 - 16:03 Uhr

Huhu,

ich würde dir empfehlen die Vokabeln in ein Object zu kapseln und anschließend in eine Liste zu packen.


class Vocable
{
   protected String m_German
   protected String m_English

   public Vocable ( String German, String English )
  {
     m_German = German;
     m_English = English;
  }

   String German { get { return m_German; } set { m_German = value; } }
   String English { get { return m_English; } set { m_English = value; } }
}

private void LoadVocabulary(object sender, EventArgs e)
{
   List<Vocable> VocableList = new List<Vocable> ();

   string[] aLines = File.ReadAllLines("Vokabeln.txt");
   foreach (string line in aLines)
   {
      string[] aSplitted = line.Split(';');
      if (int.Parse(aSplitted[2]) == m_Schwierigkeit)
      {
          VocableList.Add ( new Vocable ( aSplitted[1], aSplitted[0] ));
      }
   }
}

Dann kannst du ganz einfach per Random drauf zugreifen.

[Edit]
Ein Dictionary Object halt ich hier für unangebracht. Aber du auf ein Dictionary Object mit dem Property 'Values' oder 'Keys' auch drauf zugreifen


String English = m_EnglishDeutsch.Keys[i];
String Deutsch = m_EnglishDeutsch.Values[i];

Sowas solltest du aber in der Doku nachlesen!
MSDN

gruß Sieben

28.02.2008 - 14:02 Uhr

Hm... sowie es aussieht kann man das Drucken mit der WebBrowser-Klasse
leider nicht überwachen.

Eine Möglichkeit wäre jetzt, von der WebBrowser-Klasse zu erben und die
Print-Methode zu überschreiben. Dann könntest mit der PrintDoucment Klasse
den Druckvorgang überwachen und würdest Informiert wenn dieser den
Druck-Vorgang fertig hat.

Ansonsten bleibt da nur deine Unschöne Lösung.


Willst du nur den Html Seitenquelltext drucken oder die komplette Seite?

gruß Sieben

28.02.2008 - 13:57 Uhr

Rechtsklick auf die ToolBox -> Elemente hinzufügen -> durchsuchen -> deine *.exe oder *.dll auswählen -> ok

gruß Sieben

28.02.2008 - 13:17 Uhr

Huhu,

man kann im FreePDF auch selber einstellen das der Dialog nicht kommt:

FreePDF -> Bearbeiten -> Einstellungen -> Profile -> Profil auswählen -> Ändern -> FreePDF Dialog -> Aktion beim Drucken

Ist dann aber glaub ich Rechner abhängig.

gruß Sieben

28.02.2008 - 12:40 Uhr

Hm... benutzt du das Object 'PrintDocument' zum drucken?

Diese hat ein Event 'EndPrint - Occurs when the last page of the document has printed.'
Wenn du dieses Abonnierst und darauf reagierst sollte er fertig sein mit dem Drucken und die Datei in dem Verzeichnis liegen.


public void Xxx ()
{
  this.printDocument1.EndPrint += new
   System.Drawing.Printing.PrintEventHandler
   (this.printDocument1_EndPrint);
}

private void printDocument1_EndPrint(object sender, 
System.Drawing.Printing.PrintEventArgs e)
{
   MessageBox.Show(printDocument1.DocumentName + 
      " has finished printing.");
}

gruß Sieben