Laden...
Y
Benutzerbeschreibung

Forenbeiträge von Yeats Ingesamt 102 Beiträge

07.12.2015 - 11:54 Uhr

Hallo morph1um,

Wenn ich deine Frage lese, dann stellt sich mir die Frage ob du die DGV's als Seed für den Zufallszahlengenerator nutzen möchtest?!?

19.11.2015 - 15:49 Uhr

Hallo,
Ein


list.Items.Refresh()

bewirkt das eine neue View erstellt wird. Dadurch verlierst du den Focus und den Inhalt. Versuche das Hinzufügen neuer Items über das MVVM Pattern zu lösen, dadurch sollte dieses Problem zu lösen sein.

12.11.2015 - 09:54 Uhr

@p!lle

ändere ich das i auf 0 dann kommt mir 21 häuser raus als ergebnis hat aber nur 20 erstellt wie kann ich das ändern

Ich verstand die Frage so, dass er bei 0 starten wollte. Somit wäre die Bedingung im Schleifenkopf zum Anpassen gewesen. Wenn der Ersteller der Frage mit 1 starten möchte dann ist das natürlich auch legitim.
@Redmoon147: Hierfür sieh dir die Antwort von p!lle an

12.11.2015 - 09:42 Uhr

Hallo,

Sieh dir dazu deine Schleife an. Wenn du i auf 0 änderst muss du entsprechend deine Bedingung bearbeiten. Du startest bei 0 und gehst bis 20. Das sind insgesamt 21 durchläufe.
Ändere hierbei die Bedingung

 i<=anzahl 

zu

 i<anzahl 

Somit läuft die Schleife von 0 bis 19 und ergibt somit 20.

16.09.2015 - 21:01 Uhr

Welche Datentechnologie? Ef? nHibernate? Mittels vordefinierter Sql Statements?
Mittels Joints funktioniert es nicht?

14.09.2015 - 22:04 Uhr
  • welches Datenbanksystem bietet sich für dieses Projekt + einen Anfänger für mich am besten?

Für den beschriebenen Anwendungsfall ist eine Sqlite Datenbank bei weitem ausreichend.

  • wenn ich die ComboBoxen fülle, soll ich dann schon die Spielerwerte irgendwo speichern "um sie schon mal da zu haben" oder sollte ich quasi erst, wenn man in der Combobox den Spieler anklickt das Statement abschicken und die Textboxen mit den Werten "frisch aus der Table1" füllen?

Wie meinst du "irgendwo speichern"? Liste? Xml?

  • Wenn in der Combobox der Spieler Name (mit Vor und Nachnamen) steht, wie "identifiziere" ich im Programm den Spieler anhand der Spieler ID am besten?
    Sprich, dass dann auch wirklich Spieler X mit der richtigen PlayerID XYZ ausgewählt und dem entsprechend auch die richtigen Werte angezeigt werden

Eine Möglichkeit wäre, die Combobox mit deinen Spielern zu befüllen. Wenn "Spieler" als Klasse hast, kannst du dieser Klasse ein Property spendieren, dass dir den Namen des jeweiligen Spielers liefert. Dies kannst du dann in der Combobox darstellen. Somit hättest du immer direkten Zugriff auf sämtliche Properties deiner Spieler-Klasse.

04.08.2015 - 08:54 Uhr

Sieh dir dazu einmal die Klasse HierarchicalDataTemplate an.

Gruß,
Yeats

24.07.2015 - 18:37 Uhr

Hallo Broob,

Bezüglich deiner ersten Meldung, diese hat nichts mit Visual Studio 2015 zu tun, sondern betrifft deine Xamarin Lizenz.

23.07.2015 - 09:56 Uhr

Poste doch mal deinen Code zum Neustarten des Terminals.
Wie lange benötigt das Terminal zum Herunterfahren?

06.11.2014 - 15:54 Uhr

Dauer der mp3 ist über 4 Minuten, durch das entfernen von jeweils 60 am Anfang und Ende bleiben somit noch gute 2:24Minuten übrig.
Mp3 kann gelesen werde, da sie (lt. ProcessMonitor) auch nicht von einem anderen Prozess geblockt wird.
Befindet sich im genau diesem Ordner und kann vom Programmcode auch via MediaElement abgespielt werden

PS: Sie kann, ohne das Trimmen, in ein anderes Medien Format transcodiert werden. Aber sobald hier beide Properties (transcoder.TrimStartTime und transcoder.TrimStopTime) gesetzt sind, können Samples nicht mehr verarbeitet werden.
PPS: Bei einem anderen Versuch mit einem Video (und entsprechender Umstellung der Encoding Profiles), funktioniert das Trimmen.

06.11.2014 - 15:14 Uhr

Da auch folgendes zur gleichen Exception führt:


private async Task TranscodeFromMp3ToWav()
{
            const string inputFilePath = @"Battlelore - Sword's Song - 11 - Starlight Kingdom.mp3";
            //const string inputFilePath = @"b8845d32-8875-4469-a610-05758c3bccaf.mp3";

            var file = await KnownFolders.MusicLibrary.GetFileAsync(inputFilePath);

            var profile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
            var transcoder = new MediaTranscoder();
            var folder = ApplicationData.Current.LocalFolder;
            var outputFile = await folder.CreateFileAsync("output.mp3", CreationCollisionOption.ReplaceExisting);

            transcoder.TrimStartTime = new TimeSpan(0, 0, 1, 0);
            transcoder.TrimStopTime = new TimeSpan(0, 0, 1, 0);

            var transcode = await transcoder.PrepareFileTranscodeAsync(file, outputFile, profile);

            if (transcode.CanTranscode)
            {
                await transcode.TranscodeAsync();
            }
}

Lag der Fehler nicht am async/void.

06.11.2014 - 13:51 Uhr

Hatte nun wieder etwas Zeit mich darum zu kümmern. Mein Ablauf sieht jetzt folgend aus:1.Transcodieren der mp3 in eine Wav-Datei mittels der Transcode Funktion von WinRt 1.Die so erhaltene Wav-Datei öffne ich anschließend als Stream 1.Diesen Stream lese ich vollständig aus und identifiziere dann die einzelnen RIFF Chunks (Header, fmt, junk, Data) 1.Im Data Chunk hab ich dann die Raw-Audio Informationen 1.Trimmen tu ich das ganze dann auf dem Data Chunk. Anschließend berechne ich mir die neue Größe der einzelnen Chunks (in diesem Falle dann eben von Header und Data) 1.Schreibe eine neue Wav-Datei in den Storage 1.Transcodiere dieses dann zurück in eine mp3-Datei 1.Lösche die neu erstellte Wav-Datei

30.10.2014 - 15:39 Uhr

So wie es aussieht ist das Problem hierbei diese Zuweisung:

transcoder.TrimStartTime = new TimeSpan(0, 0, 1, 0);
transcoder.TrimStopTime = new TimeSpan(0, 0, 1, 0);

Lasse ich diese Zuweisungen weg, kann das TranscodeAsync() den Aufruf verarbeiten. Da ein Versuch mit Trimmen bei Video Dateien funktioniert, dürfte hier wohl bei Audio ein generelles Problem zu sein!?!

Hat sonst vielleicht jemand eine Idee wie ich ein Audio - Datei innerhalb einer StoreApp Trimmen könnte, ohne mir jetzt eine große Interop Wrapper Klasse zu bauen?

Mfg

29.10.2014 - 14:46 Uhr

Hallo

Bin mal wieder an einem Punkt angekommen wo ich Hilfe benötige.

Diesmal gehts um Audio. Mein Ziel ist es eine Audio-Date am Anfange und am Ende zu beschneiden.
Das ganze soll aber in einer Windows Store App stattfinden. Bibliotheken wie NAudio sind zwar schön, allerdings kommt man damit nicht durch den Certification Process, da NAudio ein Framework nutzt, dass nicht vom Windows Store unterstützt wird (unterstützt wird WASAPI und XAudio2).

Nach einiger Suche hab ich nun etwas gefunden, was scheinbar das tun soll was ich möchte. Mittels MediaTranscoder kann man Video und Audio Files transkodieren und auch trimmen.

Ich habe hier mal eine TestMethode geschrieben.


private async void TestAsync()
        {
            const string inputFilePath = @"Battlelore - Sword's Song - 11 - Starlight Kingdom.mp3";
            const string outputFilePath = @"output.mp3";

            var mp3AudioProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Medium);

            var file = await KnownFolders.MusicLibrary.GetFileAsync(inputFilePath);
            
            //var properties = await file.GetBasicPropertiesAsync();
            //var size = properties.Size;

            var transcoder = new MediaTranscoder();
            StorageFile outputFile = null;
            var notFound = false;
            try
            {
                var oFile = await KnownFolders.MusicLibrary.GetFileAsync(outputFilePath);
                outputFile = oFile;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                notFound = true;
            }
            if (notFound)
                outputFile = await KnownFolders.MusicLibrary.CreateFileAsync(outputFilePath);


            //transcoder.AlwaysReencode = true;
            transcoder.TrimStartTime = new TimeSpan(0, 0, 1, 0);
            transcoder.TrimStopTime = new TimeSpan(0, 0, 1, 0);

            var preparedTranscodeResult = await transcoder.PrepareFileTranscodeAsync(file, outputFile, mp3AudioProfile);
            transcoder.VideoProcessingAlgorithm = MediaVideoProcessingAlgorithm.Default;
            
            if (preparedTranscodeResult.CanTranscode)
            {
                await preparedTranscodeResult.TranscodeAsync();
            }            
        }

Bekomme hier allerdings bei:


await preparedTranscodeResult.TranscodeAsync();

eine System.Exception mit zusätzlicher Information: > Fehlermeldung:

Fehler bei diesem Vorgang, da von der Senke keine Beispiele verarbeitet wurden. (Ausnahme von HRESULT: 0xC00D4A44)

Im Detail:> Fehlermeldung:

System.Exception occurred
_HResult=-1072870844
_message=Fehler bei diesem Vorgang, da von der Senke keine Beispiele verarbeitet wurden. (Ausnahme von HRESULT: 0xC00D4A44)
HResult=-1072870844
IsTransient=false
Message=Fehler bei diesem Vorgang, da von der Senke keine Beispiele verarbeitet wurden. (Ausnahme von HRESULT: 0xC00D4A44)
Source=mscorlib
StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
InnerException:

Hat hier vlt jemand eine Idee was mir fehlt? Ist MediaTranscoder überhaupt in der Lage, Audio Files alleine zu transkodieren?
Habe ich eine Einstellung vergessen oder bin ich einfach nur blöd?

MFG

26.06.2014 - 20:00 Uhr

Die Frage war auch nicht ob man ein WCF Service in einem Windows Service hosten kann, sondern warum es beim Aufbau eine Loopback Verbindung zu Problemen kommt, wenn die App als Package installiert wird.

25.06.2014 - 11:47 Uhr

Update:

MetroApps ist es nicht erlaubt eine loopback Adresse anzusprechen. Während der Entwicklung ist es möglich aber sobald ein App-Package installiert wird ist es nicht mehr erlaubt.

Weitere Informationen:
How to enable loopback and troubleshoot network isolation (Windows Runtime apps)

Using network loopback in side-loaded Windows Store apps

23.06.2014 - 18:50 Uhr

Danke unconnected,

Leider sind die Capabilities nicht daran schuld, da alle testweise Capabilities aktiviert waren.

Mfg

23.06.2014 - 11:55 Uhr

Hallo,

Habe zur Zeit ein kniffliges Problem das mich nun schon mehrere Tage beschäftigt. Ich schreibe gerade an einer WinRT/Modern UI APP. Diese App kommuniziert mit einem lokalen Service über ein WCF Service. Das lokale Service bekommt von einem Gerät Daten übermittelt. Diese Daten werden dann durch das WCF Service an die App gesendet (Binding ist net.tcp).

Starte ich die App ist die Kommunikation in Ordnung, Daten kommen an. Wenn ich ein Package erstelle um die App auf einem Tablet zu installieren dann tritt folgendes Phänomen auf:

Wird die App mit dem Remote Debugger auf dem Tablet installiert ist kein Problem zu beobachten. Wird mittels Package installiert, dann bekomme ich ein Timeout. Das Windows Service ist am Tablet ebenfalls installiert und läuft.
Wenn die App schon mal mittels Remote Debugger installiert wurde, dann sind weitere Installationen mit einem Package möglich. Ändert sich aber der AppKey/Identity von der App dann ist keine Kommunikation mehr möglich.

Die Frage die sich mir stellt, wodurch wird das verursacht? Firewall schließe ich aus, da auch mit abgeschalteter Firewall getestet wurde. Die App Capabilities sollten es auch nicht sein, denn wie gesagt die Verbindung ist möglich nach Remote Debugger.

Jede Idee wäre sehr willkommen.

07.10.2013 - 10:12 Uhr

Hallo,

Habe seit geraumer Zeit ein Problem beim Debugging von WCF Services. Ich habe ein Projekt (XX) in dem mehrere WCF Services liegen, wenn ich mittels Debugger in ein Service komme, bekomme ich nach unterschiedlichen Zeiträumen einen Fehler aus der w3wp.exe: > Fehlermeldung:

An unhandled win32 exception occured in w3wp.exe. The Just-In-Time debugger was launched without necessary security permissions. To debug this process, the Just-In-Time debugger must be run as an Administrator. Anschließend ist ein weiteres Debuggen nicht mehr möglich.

Starte ich ein anderes Projekt (XY), öffne ein Service des anderen Projektes (XX) und steppe dann mit dem Debugger hinein, bekomme ich keine Fehlermeldung.

Im EventLog bekomme ich folgenden Eintrag:

Fehlermeldung:
Name der fehlerhaften Anwendung: w3wp.exe, Version: 7.5.7601.17514, Zeitstempel: 0x4ce7afa2
Name des fehlerhaften Moduls: kernel32.dll, Version: 6.1.7601.18229, Zeitstempel: 0x51fb1676
Ausnahmecode: 0xc0000005
Fehleroffset: 0x000000000001652e
ID des fehlerhaften Prozesses: 0x1604
Startzeit der fehlerhaften Anwendung: 0x01cec3331847283f
Pfad der fehlerhaften Anwendung: c:\windows\system32\inetsrv\w3wp.exe
Pfad des fehlerhaften Moduls: C:\Windows\system32\kernel32.dll
Berichtskennung: 0af3a054-2f27-11e3-97bc-5cf9dd4197b2

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2013-10-07T08:04:09.000000000Z" /> 
  <EventRecordID>43033</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>g.****.local</Computer> 
  <Security /> 
  </System>
  <EventData>
  <Data>w3wp.exe</Data> 
  <Data>7.5.7601.17514</Data> 
  <Data>4ce7afa2</Data> 
  <Data>kernel32.dll</Data> 
  <Data>6.1.7601.18229</Data> 
  <Data>51fb1676</Data> 
  <Data>c0000005</Data> 
  <Data>000000000001652e</Data> 
  <Data>1604</Data> 
  <Data>01cec3331847283f</Data> 
  <Data>c:\windows\system32\inetsrv\w3wp.exe</Data> 
  <Data>C:\Windows\system32\kernel32.dll</Data> 
  <Data>0af3a054-2f27-11e3-97bc-5cf9dd4197b2</Data> 
  </EventData>
  </Event>

Ich habe schon ein paar Tage damit zugebracht den Fehler zu finden, allerdings hatte eine google Suche zu diesem Fehler, unterschiedliche Ergebnisse erbracht. Die vorgeschlagenen Lösungen halfen mir leider auch nicht viel weiter.
Ich hoffe das hier vielleicht jemand noch einen weitere Idee hat, was ich unternehmen könnte.
Mfg

PS: Verwende Visual Studio Ultimate 2012 Version: 11.0.50727.1
.Net Framework: Version 4.5.50709

27.05.2013 - 15:07 Uhr

@Th69: Es ist eine Liste von strings

@Console32: Nein, verwechsle hierbei nicht GroupBy mit OrderBy. Benötige eine Gruppierung der Elemente. Der Sinn dazu ist der, dass das UI-Seitig in einem "Tree" dargestellt werden soll. Zugrunde liegt nun mal eine List of Persons. Jede Gruppierung entspricht hierbei einem Node. Die Anzahl und Reihenfolge der Categories kann vom User hierbei beliebig gewählt werden.

Meine Lösung (leider nicht so elegant wie erhofft aber funktionierend):
Mittels einer switch-Anweisung wird zuerst nach dem ersten Element aus der Liste Categories, die List of Persons, mittels GroupBy gruppiert. Anschließend für jedes Element in der List<IGrouping<..>> überprüft ob noch weitere Categories vorhanden sind und für diese ein weiterer Durchlauf gestartet.

mfg

24.05.2013 - 10:17 Uhr

Hallo alle zusammen,

Zuerst mal ein wenig Code


public class Person {
	public string FirstName{get;set;}
	public string MiddleName{get;set;}
	public string LastName{get;set;}
	public string AddressStreet{get;set;}
	public string AddressCity{get;set;}
	public string AddressCountry{get;set;}
	public string AddressZipCode{get;set;}
	public int Age{get;set;}
	... // And some more properties
}

....

List<Person> personList = new List<Person>();
for(int i= 0; i<100; i++) {
	personList.Add(new Person(){.....});
}

....

var categories = new List<string>();
categories.Add("FirstName");
categories.Add("AddressCity");
categories.Add("Age");
// And maybe more categories
DoSomeMagic(personList, categories);

....
public void DoSomeMagic(List<Person> list, List<string> categories) {
	var grouped = list.GroupBy(x=>x.AddressCity);
	foreach(var item in grouped) {
		foreach(var person in item) {
			...
		}
	}
}

Wie man sieht habe ich eine Klasse Personen, mit dieser wird eine Liste erstellt. Die Klasse hat mehrere Properties.
Nun möchte ich die Liste der Personen, entsprechend mit einer List mit den Namen von den Properties der Klasse Personen, gruppieren.
Wobei in der Liste Categories die Reihenfolge veränderbar sind und die Anzahl der Kategorien unterschiedlich sein kann.
Die Frage ist nun, wie kann ich entsprechend dem Inhalt in categories eine möglichste elegante Methode aufbauen, die das gewünschte Verhalten erzeugt.

Mfg

22.02.2013 - 14:30 Uhr

Hallo,

@xxMUROxx: Musste die Elemente vertikal und horizontal anordnen.
@Sebastian1989101: Bin dann auch auf das Wrappanel gestoßen und es erfüllt meine Anforderungen. Danke

20.02.2013 - 18:28 Uhr

Hallo,

Ich habe eine List mit Datenbankobjekten. Anhand dieser Liste sollen nun UserControls erzeugt werden.
Dazu habe ich mir ein UserControl mit eigenem ViewModel gebaut. Nun möchte ich die Daten darstellen. Für die Darstellung nutze ich ein ItemControl. Soweit so gut.
Das Problem ist, anhand des Contents der Objekte soll sich die Position ändern, sprich ein Objekt mit einer höheren Priorität soll weiter oben dargestellt werden, außerdem soll der verfügbare Bereich ausgefüllt werden.

Meine Idee dazu war, dass ItemControl in einem Canvas Bereich zu erzeugen und mir die Position der einzelnen Objekte zu berechnen.
Da aber die Breite und Höhe der UserControls variable sein kann, kann ich keine fixen Werte verwenden.

Hat jemand eine Idee dazu wie ich da nun an die Höhe und Breite komme, bevor schon alles gerendert wurde? Oder vielleicht einen anderen Ansatz hierfür?

mfg Yeats

19.01.2013 - 09:21 Uhr

Guten morgen,

Ich benutze ein DataGrid um Daten aus einer DB anzuzeigen. Die Daten werden von mir in einer ICollectionView bereit gestellt. Die Anzeige funktioniert soweit. Wenn ich im DataGrid eine Row markiere löse ich ein SelectionChanged Event aus. Diese Event ist dabei an ein Command gebunden.
Nun würde ich weiters gerne auf CellEditEnding Event hören. Dazu habe ich ein weiteres Command angelegt. Es wird korrekt aufgerufen, allerdings bekomme ich das Objekt von der Datenbindung her was nicht verändert ist.

xaml:


<DataGrid Grid.Row="1" x:Name="Cities" ItemsSource="{Binding CityCV}"/>
...
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellEditEnding">
<Command:EventToCommand Command="{Binding CitiesCellChangedCommand, Mode=OneWay}" PassEventArgsToCommand="True" CommandParameter="{Binding SelectedItem, ElementName=Cities}" />
</i:EventTrigger>
</i:Interaction.Triggers>
...
<DataGrid.Columns>
...
<DataGridTextColumn x:Name="Inhabitants" Binding="{Binding Inhabitants}" Header="Inhabitants" Width="1*"/>
</DataGrid.Columns>
...
</DataGrid>

ViewModel:



private List<CITY> _cities { get; set; }
private CollectionViewSource _cityCVS;
private ICollectionView _cityCV;
public ICollectionView CityCV
{
    get { return _cityCV; }
    set
    {
           if (_cityCV == value) return;
           _cityCV = value;
           OnPropertyChanged("CityCV");
     }
}
-......-
public RelayCommand<CITY> CitiesCellChangedCommand { get; private set; }


-.......-
_cityCVS = new CollectionViewSource { Source = _cities };
CityCV = _cityCVS.View;
-.......-
CitiesCellChangedCommand = new RelayCommand<CITY>(args => _entities.SaveChanges());

Auf was muss ich korrekterweise im Command binden um den veränderten Wert aus der Cell zu erhalten?

mfg Yeats

09.08.2012 - 23:27 Uhr

Hallo,

Wie in der Überschrift zu lesen ist, habe ich eine Frage dazu, wie man mit Linq To XML zwei Abfragen miteinander verbindet. Die Struktur meiner XML-Datei sieht wie folgt aus:


<Staedte>
<Stadt Name="NameDerStadt">
<Produkt Name="NameDesProdukts">
<Element1/>
<Element2/>
</Produkt>
<Produkt Name"...">
</Produkt>
</Stadt>
<Stadt Name="...">
...
</Stadt>
</Staedte>

Nun habe ich zwei Abfragen erstellt. Die erste Abfrage liefert mir eine bestimmte Stadt, die Zweite ein bestimmtes Produkt. Nun würde ich gerne beide Abfragen miteinander zu einer einzigen Abfrage kombinieren.


var City =
                from cities in Document.Descendants("Stadt")
                where (string)cities.Attribute("Name") == Cityname
                select cities;

var Product = 
                from Prod in City.Descendants("Produkt")
                where (string)Prod.Attribute("Name") == ProductName
                select Prod;

Allerdings bekomme ich die Abfrage nicht so hin wie ich es gerne hätte und bitte nun hier um Hilfe.
Wäre toll wenn mir jemand erklären könnte wie die Abfrage-Syntax zu schreiben ist.

Mit freundlichen Grüssen,
Yeats

23.04.2012 - 11:42 Uhr

Allen einen wunderschönen guten Tag,

Habe eine grundsätzliche Frage. Ich möchte eine Applikation für ein WindowsPhone 7 entwickeln die periodisch Sensordaten abruft und diese an einen WebService schickt.
Dabei soll eine Priorisierung der verschiedenen Sensoren erfolgen, zb. Puls soll Priorität 1 erhalten und demnach öfter ausgelesen werden als zb GPS mit einer niedrigeren Priorität.

Mein erster Gedanke war, dass ich mit einem Timer arbeite da dieser periodisch die Daten abrufen kann.
Mein zweiter Gedanke war ein Threadpool und RegisterWaitForSingleObject
Mein dritter Gedanke waren unterschiedliche Threads zu erstellen, da ich den Threads unterschiedliche Prioritäten zuordnen kann.

Allerdings bin ich jetzt unentschlossen, mit was ich arbeiten soll. Ich hoffe das mir jemand sagen kann, was die bessere Wahl ist oder mit eine alternative Vorschlagen kann.

09.08.2011 - 11:53 Uhr

Hallo.

Wollte noch eine kurze Meldung abgeben. Nachdem ich nun wieder Zeit gefunden habe mich diesem Projekt zu widmen (und sich die Anforderungen zum Teil geändert haben) konnte ich einen anderen Ansatz wählen.
Die Knoten werden nun in einem 2D Array gespeichert. Somit kann ich wie von Gumbler85 vorgeschlagen mir die Position eines Knotens über die Anzahl der Elemente pro Ebene berechnen.

Vielen Dank noch einmal an Gumbler85 und herbivore
mfg Yeats

27.04.2011 - 16:48 Uhr

Hallo

Sitze seit einiger Zeit an einem Problem und komme nicht richtig weiter.

Im Anhang befindet sich ein Bild von Netzwerk, dass ich zeichnen muss. Die drei Werte im PT(x,x,x) geben an, an welcher Position im Netzwerk sich der Knoten PT befindet. K ist ein Wert der weiters nichts zur Sache tut.

Ich bin nun her gegangen und habe eine Klasse erstellt die mir die Nodes representiert. Weiters eine Klasse für das Netzwerk. Eine dritte Klasse für die Rechtecke, um diese zeichnen zu können.

Die Rechtecke werden von mir in einer Liste gehalten, so dass beim Zeichnen nur mehr die Liste durchlaufen werden muss um die Objekte zu zeichnen.

Hinweis: Das Netzwerk selbst verjüngt sich nach oben hin wieder zu einem Knoten. Ein Knoten hat nicht unbedingt drei Nachfolger.

Nun schlage ich mich mit der Positionierung der Nodes herum und komme nicht weiter. Meine Frage ist nun, wie könnte ich herangehen um die X-Koordinaten der Rechtecke so zu ermitteln, damit es zu keinen Überlappungen kommt?


//Node Klasse
    class Node
    {
        private int left, middle, right;
        public int intLeft { get { return left; } }
        public int intMiddle { get { return middle; } }
        public int intRight { get { return right; } }
        private uint k;
        public uint K { get { return k; } }

        internal Node Left { get; set; }
        internal Node Right { get; set; }
        internal Node Middle { get; set; }

        public Node(uint k_db, int left, int middle, int right)
        {
            ...
        }
    }


//Netzwer Klasse: Beinhaltet sämtliche Knoten, baut das Netzwerk auf und soll es wieder ausgeben
class Network
    {
        public Node root;

        public Network()
        { root = null; }
        
        ///Hängt einen neuen Knoten in das Netzwerk
        public Node createNetwork(Node value, Node newNode, int left, int middle, int right)
        {
            ....
        }

        public enum direction { left, middle, right, center };

        ///Durchläuft das Netzwerk, überprüft ob ein Knoten schon in der list ist und fügt ihn gegebenenfalls hinzu.
       ///xsize und ysize sind die Höhe und Breite der Bitmap in die gezeichnet wird.
       ///xoffset und yoffset sind Werte, um wie viel das Rechteck vom Mittelpunkt der Bitmap verschoben sind
        ///direction: Von welchem Knoten wurde die Methode aufgerufen
        public void getNodes(Node value, List<GraphicObject> list, int xsize, int ysize, int xoffset, int yoffset, float factor, int count, direction Direction)
        {
            GraphicObject temp = null;
            if (value != null)
            {
                temp = new GraphicObject(value, xsize, ysize, xoffset, yoffset);

                if (list.Count != 0)
                {
                    bool isIn = false;
                    foreach (GraphicObject n in list)
                    {
                        if (n == temp) { isIn = true; break; }
                    }
                    if (!isIn) { list.Add(temp); }
                }
                else list.Add(temp);

                if (value.Left != null)
                {
                    getNodes(value.Left, list, xsize, ysize, (int)(xoffset + 250), (int)(yoffset + 70), factor + 0.1f, direction.left);
                }

                if (value.Middle != null)
                {
                    getNodes(value.Middle, list, xsize, ysize, (int)(xoffset), (int)(yoffset + 70), factor + 0.1f, direction.middle);
                }

                if (value.Right != null)
                {
                    getNodes(value.Right, list, xsize, ysize, (int)(xoffset - 250), (int)(yoffset + 70), factor + 0.1f, direction.right);
                }
            }
        }


//GraphicObject: Wird für das Zeichnen des Netzwerks verwendet. 
class GraphicObject
    {
        private const int width = 80, height = 30; 
        private string text;

        public Rectangle Rect { get; set; }
        public string Text { get { return text; } }
        
        public GraphicObject(Node value, int xsize, int ysize, int xoffset, int yoffset)
        {            
            if (value.intLeft == 0 && value.intMiddle == 0 && value.intRight == 0)
            {
                text = string.Format("PT = GT({0},{1},{2})\nk={3}", value.intLeft, value.intMiddle, value.intRight, value.K);
            }
            else
                text = string.Format("GT({0},{1},{2})\nk={3}", value.intLeft, value.intMiddle, value.intRight, value.K);
        
            Rect = new Rectangle((xsize / 2) - (width / 2) - xoffset, ysize - height - yoffset, width, height);
        }

        public static bool operator ==(GraphicObject G1, GraphicObject G2)
        { ... }

        public static bool operator !=(GraphicObject G1, GraphicObject G2)
        { ... }
    }

Falls ich mich unklar ausgedrückt haben sollte, bitte einfach nachfragen.

mfg Yeats

28.12.2009 - 16:26 Uhr

Hallo!

Habe mal wieder ein kleines Problem. Nach langem bin ich nun dazu gekommen etwas mit ASP.Net zu programmieren, bis jetzt hat auch alles ganz gut geklappt. Doch nun hab ich eine Frage.

Zum Hintergrund:
Auf meiner Form befinden sich unter anderem zwei TextBox-Felder auf die ich eine Ajax CalendarExtension gelegt habe. Diese liefern mir zwei Werte, die für eine Datenbankabfrage nehmen möchte. Das Select- Statement soll sich, während dem man die verschiedenen Tage auswählt, selbst zusammen bauen.

Zum Problem:
Das ganze wollte ich über ein Event steuern (also in der Art: Wenn sich der Text ändert rufe Funktion auf und mache was). Dafür habe ich das TextChanged Event genommen, doch sobald sich nun der Text ändert, tut sich nichts. Erst wenn ich auf z.b. Enter drücke wird das TextChanged- Event ausgelöst.

Meine Frage ist jetzt warum? Und es wäre auch hilfreich wenn mir jemand die Richtung aufzeigen könnte, wie ich das angehen könnte.

Mit freundlichen Grüßen
Y

09.02.2009 - 17:17 Uhr

www.roboternetz.de
Findet man einiges an Informationen rund um roboter. Noch dazu einfache Schaltungen um sich einen µC aufzubauen und diesen dann zu programmieren. Dabei wird dort aber hauptsächlich mit C, C++ gearbeitet.

mfg

12.09.2008 - 11:27 Uhr

Was ist wenn du das Dataset mit sämtlichen Werten füllst und anschließend auf das Dataset ein select ausführst.


string where ="..."; //Die where-Klausel ohne where
DataTable tbl = result.Table[];
DataRow [] row = tbl.Select(where);

09.08.2008 - 12:41 Uhr

Erst mal, guter Job und lässiges Spiel. Eine Frage hat sich mir dennoch aufgedrängt.
Kenn mich mit Reaktoren zwar nicht wirklich aus, aber wenn jetzt die Steuerstäbe komplett eingefahren sind und der Reaktor noch eine Temperatur von sagen wir mal 1000° hat der Generator nicht abgeschaltet ist, müsste er ja trotzdem noch Leistung erzeugen. Oder irre ich mich da jetzt?

lg

08.08.2008 - 10:37 Uhr

Hallo avlbger,

Ja, bei der Schnittstelle ist keine Treiber-CD dabei, den würdest du auf der CD finden wenn du dir den Roboter ebenfalls bestellt hättest. Aber der Treiber den man im Internet findet ist meiner Meinung nach praktischer 🙂

Mit dem Senden hatte ich bis jetzt noch keine Probleme, wobei ich, als ich gesendet hab mit C++ gearbeitet hab und an den Asuor gesendet hab.


...
Infra = new System.IO.Ports.SerialPort();
Infra.BaudRate = rate;
Infra.PortName = "COM6";
Infra.Parity = System.IO.Ports.Parity.None;
Infra.DataBits = 8;
Infra.StopBits = System.IO.Ports.StopBits.One;
Infra.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Infra_DataReceived);
...
Infra.Read(Buffer, 0, Buffer.Length);//Zum Lesen des Buffers
...

Das ist mein Code den ich im Konstruktor einer Klasse hab um mit der Schnittstelle zu arbeiten.

Selbst hab ich im Moment Probleme, den Code von der Fernbedienung richtig zu interpretieren, da ich mehr Empfange als ich erwartet habe. Des weiteren bleibt bei mir der Code nicht immer gleich.

lg

03.08.2008 - 12:41 Uhr

tschuldigung, such nach "Asuro" dann geh auf "PROGRAMMIERBARER ROBOTER ASURO - BS" und unter Zubehör findest das Teil. Wird schon zusammengebauter geliefert.

lg

03.08.2008 - 11:30 Uhr

Hallo avlbger!

Ich selbst bin auch gerade dabei so etwas ähnliches wie du zu programmieren. Als IR-Sender und Empfänger benutze ich einen "USB IR Adapter für Asuro und Yeti" zu finden auf conrad für 21,50€. Damit ist es sehr einfach eine IR-Schnittstelle zu implementieren.

lg, Yeats

02.07.2008 - 19:19 Uhr

Im Konstruktor der neuen Form bekommst du als Parameter den String der als Name hergenommen werden soll.
Beim Anlegen und initialisieren der Klasse übergibst du den String mit.

14.06.2008 - 16:56 Uhr

hmm...
weiß nich ob du das beabsichtig hattest oder nicht aber mir is aufgefallen, dass bei der Consolen- Anwendung der Name der Frau Lisa is und wenn man dann auf der Remot- Oberfläche bei den Mails nachschaut steht da wieder Julia.

Ansonst: Tolle Arbeit 👍
mfg

18.10.2007 - 23:02 Uhr

Guten Abend!

Mich würde mal interessieren ob ihr mit Flussdiagrammen, oder mit Blockbildern arbeitet um ein Programm zu erstellen. Also ein Programm von Anfang bis Ende zuerst auf dem Papier schreibt und es dann in den Computer tippt.

Dabei zähle ich jetzt aber nicht, dass man bei einem kniffeligen Codeabschnitt einmal eine Skizze macht oder sich Notizen oder Überlegungen niederschreibt.

Bin gespannt auf eure Meinung.
Wünsche noch einen schönen Abend.

17.09.2007 - 22:25 Uhr

supi! da mittlerweile meine nase zum bluten aufgehört hat, schreib ich dir meinen dank.
lg

17.09.2007 - 22:07 Uhr

Moin!

Bin vor kurzem auf VisualStudio 2005 umgestiegen und habe jetzt ein kleines Problem. Bin dabei ein Klasse zu schreiben, bekomme aber diese Fehlermeldung:

Der Zugriff auf "IRForm1.Form1.Infrarot.Infrarot" ist aufgrund der Sicherheitsebene nicht möglich


 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public class Infrarot
        {
        private System.IO.Ports.SerialPort Infra;
        private System.Byte[] Buffer;

        
        Infrarot()
        {
            Infra = new System.IO.Ports.SerialPort();
            Infra.PortName = "COM6";
            Infra.Parity = System.IO.Ports.Parity.None;
            Infra.DataBits = 8;
            Infra.StopBits = System.IO.Ports.StopBits.None;
            Infra.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Infra_DataReceived);
            Buffer = new Byte[100];
        }
        
        private void Infra_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            Infra.Read(Buffer, 0, 100);
        }
        public bool channel_open()  //Öffnen des Kanals zur Infrarotschnittstelle
        {
            try
            {
                Infra.Open();
                return true;
            }
            catch (System.IO.IOException)
            {
                return false;
            }
        }
    }
        private void cmd_Start_Click(object sender, EventArgs e)
        {
            Infrarot inf1 = new Infrarot();
        }     
    }

Der Fehler tritt bei Infrarot inf1 = new Infrarot();

Ich würde mir wünschen, dass mich von euch jetzt jemand mit meiner Nase auf meinen Fehler drücken würde🙂
lg

16.12.2006 - 15:54 Uhr

@Tom:
Es stimmt, dass das Datum "13.11.2006 00:00:00" ist. Bei einer Ausführung wird dieses Datum + Uhrzeit zurückgegeben. Dazu benötige ich aber das Statement mit der Uhrzeit nicht.
Dabei reicht es wenn

"SELECT * FROM tab_Persönlich WHERE Datum like '13.11.2006';"[\CODE]
steht.
Es funktioniert aber wenn ich schreibe
[CODE]"select * from tab_Persönlich where Datum like '13.11.%';"

obwohl ich in der Datenbank(Access) diese Spalte als "Date" deklariert habe.

@FZelle:
Vielen Dank

15.12.2006 - 19:14 Uhr

Guten Tag!
Ich hab hier diesen Codeausschnitt. So wie das Select- Statement hier steht funktioniert die Anwendung und als Rückgabewert bekomme ich meine DB- Einträge.
Sobald aber statt '13.11.2006', '13.11.*# steht, bekomme ich keine Werte mehr zurück.
Ich habe auch schon probiert, dieses SQL- Statement in der Access- DB auszuführen, dort funktioniert es wunderbar.
Was ist schuld, und wie kann ich das ausbessern bzw. was muss ich anders schreiben?

[CSHARP]
System.Data.OleDb.OleDbConnection con=new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\\Projekte\\Datumserinnerung\\Termin.mdb");

System.Data.OleDb.OleDbCommand cmd=new System.Data.OleDb.OleDbCommand();
con.Open();
Console.WriteLine(con.State.ToString());
            
if (con.State == System.Data.ConnectionState.Open)//.ToString());
{
        string select = "SELECT * FROM tab_Persönlich WHERE Datum like '13.11.2006';";
         
         System.Data.DataSet ds=new System.Data.DataSet();
         System.Data.OleDb.OleDbDataAdapter adapt = new System.Data.OleDb.OleDbDataAdapter(select,con);
         adapt.Fill(ds);
                //Dataset wurde befüllt
         System.Data.DataTable datatable = ds.Tables[0];
         foreach (System.Data.DataRow row in datatable.Rows)
         { 
                Console.WriteLine("ROW: {0}\t" + row[0]+"\t{1}:\t"+row[1]+"\t{2}:\t"+row[2]);
          }

[/csharp]

10.12.2006 - 13:47 Uhr

Danke. Noch einen schönen Tag!

10.12.2006 - 12:47 Uhr

Danke für die prompte Antwort. Mir ist auch klar das man die Funktion Fill braucht um ein DataSet oder DataTable zu füllen. Aus deiner Antwort wird für mich aber nicht ersichtlich ob das Sql- Statement nun von der Datenbank(z.B.: Access) ausgeführt wird oder ob der Adapter die gesamte Tabelle lädt und dann die Select- Anweisung ausführt. Denn als Select- Anweisung könnte ja auch
"Select * from tab_Name where Datum like '13.11.*';"
stehen.

10.12.2006 - 12:15 Uhr

Guten Tag!

Ich hätte, selbst auf die Gefahr hin mich jetzt lächerlich zu machen, eine Grundsätzliche Frage zum DataAdapter.
Und zwar, wo wird der select- Befehl ausgeführt, der dem Adapter übergeben wird?

z.B.:

string select="select * from Tab_Name;";
System.Data.OleDb.OleDbDataAdapter adapt=new System.Data.OleDb.OleDbDataAdapter(select, connection);

Wird der Sql- Befehl and die DB geschickt, dort verarbeitet und das Resultat zurückgeschickt? Oder wird die Tabelle an den Adapter geschickt, zwischengespeichert, und Anweisung vom Adapter ausgeführt?

Mfg

03.03.2006 - 18:36 Uhr

Danke für eure Hilfe.

27.02.2006 - 18:22 Uhr

Guten Tag, Morgen, Abend usw.!

Ich bräuchte einen Denkanstoß für folgendes Problem. Ich möchte ein Programm schreiben welches die gesamte Festplatte nach einem bestimmten Datentyp durchsucht(also so wie wenn man bei der Suche *.jpeg eingibt). Gefundenen Dateien sollen gemeldet werden und wenn der Benutzer es wünscht öffnet oder den Pfad, die Größe, usw. in eine Datenbank speichert.
Vielen Dank im vorraus.
Mfg

16.12.2005 - 09:43 Uhr

Guten Morgen!
Danke für die Infos. Hat mir weitergeholfen. Es war mehr eine allgemeine Frage.

15.12.2005 - 18:01 Uhr

**

Hallo alle zusammen!
**

Mich würde interessieren wie man von einer unbekannten dll-Datei herausfindet, welchen Einstiegspunkt sie hat.
Danke im voraus.