Laden...

Forenbeiträge von Soier Ingesamt 25 Beiträge

18.02.2020 - 19:59 Uhr

Hi Joachim,

ich hab mir mal den Thread durchgelesen und muss sagen es fiel mir erstmal schwer zu verstehen was du möchtest bzw wo das Problem ist. Ich habs jetzt folgendermaßen verstanden: Du hast die Zentrale Roco Z21 und hast für diese eine C# Klasse gefunden. Fir Klasse funktioniert zwar irgendwie aber nicht 100 % zufriedenstellend. Die Frage ist was funktioniert nicht genau bei Kommunikation sprich was ist deine Erwartungshaltung und was ist der Ist Zustand. Evtl auch den Code posten wie du die Klasse getestet hast evtl liegt der Fehler in deiner Implementierung.

Generell wirst du in Programmierforen egal ob hier oder stackoverflow, etc. Nie jemand finden der einfach Just4fun dir eine Komplexe Aufgabe erledigt. Es ist ja auch ein Forum und keine Jobbörse. Hier gehts mehr darum bei Fragen, Problemenen etc. Hilfestellung zu bekommen. Gute Hilfestellung kann aber nur erbracht werden, wenn du deine Anforderungen konkretisiert, deine bisherigen Ergebnisse teilst und auch sagst was bei deiner Lösung passiert sprich wo knallts. Nur so können entsprechende Lösungen gefunden, disktuiert und ausgetauscht werden

23.12.2019 - 18:47 Uhr

Du verstehst anscheind nicht so ganz wie das mit einem Array funktioniert. Ich hab mal dein Array mit den Indizes skizziert, damit du ein besseres verständnis bekommst.

Also ein Array ist eine Datensammlung eines bestimmten Datentyps, in deinem Fall vom Typ int. So das heisst du speichert mehrere ganz Zahlen in diesem Array. Dabei ist jede Zahl einem Index zu geordnet. Der erste Index eines Array ist die 0. Als Beispiel nehmen wir an, du gibst die folgenden Zahlen in deine Textboxen ein: |8 | 3 | 5|. Dann hat die 8 den Index 0 und die 5 hat den Index 2. Führst du nun einen sort aus, werden die Elemente neu geordnet und bekommen somit einen neunen Index. Das Array sieht dann so aus |3|5|8|. Das heisst bei Index 0 findest du jetzt das Element mit dem Wert 3. So jetzt möchtest du das komplette Array in einer weiteren Textbox ausgeben. Um dies zu realisieren, musst du das Array einmal "durchlaufen" und in jedem Lauf das Element auslesen. Das Array durchläufst du in einer Schleife bsp. For-Schleife

 for (int i = 0; i < Array.Length; i++)
{
	mystring + Array[i].toString() + " ";
}

nachdem die Schleife durch gearbeitet ist hast du mystring mit allen Elementen des Arrays. Ich hoffe ich konnte dir dadurch dir verständlich machen wie du mit Arrays arbeitest.

Wie auch meine Vorredner schon angemerkt haben musst du aber drauf aufpassen, das du keine Char in einen Integer parst, da sonst runtime error gibt. Aber das wurde schon erklärt, wie du das abfängst

29.08.2019 - 01:36 Uhr

An sich kannste dafür sqlplus verwenden. Am besten ziehst du dir von dem Schema ein Datapump und importierst das dann wieder

24.08.2019 - 12:01 Uhr

Würde dir empfehlen nicht typsierte DataSets zu verwenden. Dann brauchste auch den Designer nicht.

Der vorteil ist dein Dataset ist weniger starr, was den Vorteil hat falls sich dein Datenbankschema ändert was sich im laufe eines Projektes schon ergeben kann.

Du kannst dann auch mit Dataadapter arbeiten, mit dem du deine Datasets füllst. So bekommen deine Datasets zur laufzeit das Tabellenschema und die Daten und die umsetzung ist auch recht einfach. Du erzeugst einen Dataadapter und gibts ihm deine SQL-Abfrage und deine Connection mit und füllst dannn mit der Fill methode das Dataset

21.08.2019 - 23:33 Uhr

Also aus der Sicht vom Datenbankdesign macht das überhaupt keinen Sinn alles in einer Tabelle zu schreiben. Normalerweisse weisst du ja was du misst.

Am besten machst du für jede Einheit eine separte Tabelle. So hast du beispielsweise eine Tabelle Für Spannung die meintetwegen 2 Spalten hat eine ID und eine Spannung. Das machste dann für jede Messgröße.

21.08.2019 - 23:19 Uhr

Hi,

mal ne doofe Frage wieso verwendest du nicht einfach als Datentyp fürs Datum Date

22.05.2019 - 00:20 Uhr

So wie ich das verstanden habe, will der Threadersteller eine Datenbank-Backup-Applikation schreiben. Sein Verfahren ist dabei die Daten in einer Json-Datei zu speichern und die dann wieder auszulesen um daraus die Insert-Statements zu generien und diese auf eine Datenbank abzufeuern, auf welcher das Backup eingespielt werden soll. So hab ich das verstanden.

Über denn Sinn und zweck das in JSON oder XML zu speichern möchte ich jetzt nicht diskutieren. Auch nicht über die Notwendigkeit für die Applikation, den selbst ist der Mann.

Da du wie ich raus lese das du unabhängig von einem verwendeten Datenbanksystem arbeiten willst, kommt OLEDB infrage, was du ja schon verwendest.

Ich würde dir aber empfehlen ein Enum für die entsprechenden Datenbanksysteme anzulegen. Die liegt schon allein daran das Connectionstrings für jedes DB-System unterschiedlich sind. Dann kannst du über eine Switch-Case Anweisung immer die entsprechenden Parts im Code ablaufen, du könntest auch dann beispielsweise für SQLServer den SQLCLIENT als Provider nehmen, der ist für SQLSERVER und bietet dir BULK-Insert. Wenn du aber weiter mit OLEDB arbeiten möchtest, könntest du deine Abläufe parallelisieren. .NET bietet dafür die Klasse parallel. Somit könntest du deine foreach schleife parallel laufen lassen, du musst nur achten ob du evtl. im connectionstring einen Parameter aktivieren musst. Bei SQLSERVER musst du beispielsweise den "MARS" Parameter auf true setzen, sonst bekommst du die Meldung das deine Verbindung beschäftigt ist mit dem ausführen eines anderen Command ist.

Also probieres ruhig mal aus mit dem parallelisieren du darfst nur nicht vergessen ein Parallelloption-Objekt anzulegen dem du eine MaxdegreeofParalism mit gibst.

kannst dann mal deine Ergebnisse mitteilen

18.03.2019 - 21:24 Uhr

Hi Jonas,

ich weiss nicht was du dir unter Tutorial vorstellst und denke die Antworten hier werden dich nicht wirklich zu frieden stellen.

Wenn dir das Thema interessiert, dann kann ich dir empfehlen nach vorlesungsskripten zu suchen(einige dozent stellen sowas frei zur verfügung) Ansonsten Fachliteratur hab eins über Deep Learning da, ist aber mehr für Python als für C#. Dennoch kannste das wissen und die Grundlagen gut verwenden.

Verlag: O´Reilly
Autor: Ramon Wartala
Titel: Praxiseinstieg Deep Learning
ISBN:978-3-96009-054-0
Prei:29.90(D)

05.03.2019 - 18:17 Uhr

Jo es wird die Exception verschluckt wenn ich in der Schleife die erste Spalte ausgebe tritt der Attempted to read or write protected memory Fehler wieder auf. Ich hab mir jetz überlegt das ich das ich die Grossen Tabellen nicht mehr mit einem einfachen SELECT * selektiere sondern via Pagining selektiere in meiner Versuchsapplikation scheint das zu funktionieren

04.03.2019 - 23:44 Uhr

Alles Klar werde es mit der List<T> probieren. Allerdings ein problem hab festgestellt das der DataReader bei den Problem Tabellen nicht komplett durch die Tabelle durch iteriert, sprich er geht aus der Schleife ohne jede Datensatz gelesen zu haben

01.03.2019 - 22:43 Uhr

Ich komme ja noch nichtmal an die 2GB, außerdem handelt es sich ja nicht um eine OutOfMemory exception. So wie ich das verstehe Versucht er auf eine Stelle im Speicher zu zugreifen wo er nicht kann.

01.03.2019 - 19:05 Uhr

also das der Speicher knapp wird schliesse ich mal aus. Beim Paging wird die Exception geschmissen bei ca. 1,6GB Speicherverbrauch(laut Diagnostic tool). Wie auch von Thomas bereits erwähnt, hab ich auch gelesen das es am Framework liegt. Hab zwischen 4.0 und 4.6.1 ma getestet ohne jeglich Änderung

28.02.2019 - 23:05 Uhr

@FZelle Der Code war nur ein Testcode um zuschauen, ob der Fehler wirklich beim Lesen der Daten auftritt, was er tut. Ich hab jetzt beides probiert Adapter.fill mit nem Datareader nach zu bauen und via Paging die Daten batchweise einzulesen jedes mal tritt der Fehler auf.

	OleDbDataAdapter myAdapter = new OleDbDataAdapter(selectstring, myConnection);
	int pagesize = 10000;
	
	for(int i = 0; i <= zeilenanzahl/pagesize; i ++)
	{
		Dataset myData = new Dataset();
		
		myAdapter.fill(myData, i * pagesize, pagesize, "myTable");
		
		myData = null;
	
	}

wie gesagt hier geht grad nur darum die Daten auszulesen, da dabei schon der Fehler auftritt und auch nur wenn ich das ganze 32-Bit laufen lasse, in 64 bit geht das problemlos. Allerdings soll die Anwendung später unter 32 -Bit laufen, da die Anwendung auf .dll zugreift die nur 32-Bit verfügbar sind.

27.02.2019 - 23:21 Uhr

Hi,

ich hab jetzt das mit dem pageing implementiert allerdings ohne erfolg nach ner zeit bringt er bei adapter.fill() den fehler (sogar wenn ich diesen part in einen try-catch block ausführe). Der Fehler tritt auch wieder nur bei 32 bit auf wenn ich die funktion testhalber in 64 bit ausführe dann geht das ohne probleme

19.02.2019 - 23:58 Uhr

Also nutze nun ADO.Net mit Oledb.

                using (OleDbDataReader myreader = selectcommand.ExecuteReader())
                {

                    for(int i = 0; i < myreader.FieldCount; i++)
                    {
                        myTable.Columns.Add(myreader.GetName(i), myreader.GetFieldType(i));
                    }

                    while (myreader.Read())
                    {
                        
                        myDatarow = myTable.NewRow();

                        for(int i = 0; i < myreader.FieldCount; i++)
                        {
                            myDatarow[i] = myreader[i];

                        }

                        myTable.Rows.Add(myDatarow);
                        count++;

                        if(count == 10000)
                        {
                            myTable.Rows.Clear();
                            count = 0;
                        }
}

also er durchläuft die Schleife einige male und nach einiger Zeit bringt er die besagte Meldunng: > Fehlermeldung:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt . Hab auch Spaßes halber mal die schleife leer gelasen da läuft der reader die schleife komplett durch

18.02.2019 - 23:21 Uhr

Ich denke das mit den 10000 war auch das Paging selbst gemeint. Also immer 10000 Einträge lesen und verarbeiten.

Bei Daten-schaufeln (Stammdatenimporte) kann das schon ein Thema sein...

Rest wurde ja schon genannt.

Ja Genau um das Handelt es sich. Wegen OLEDB das problem ist ein Datenbanksystem benötigt .dlls für eine verbindung und mir steht nur die OLEDB dll zur Verfügung welche auch noch nur als 32 bit Variante da ist. Deshalb muss die Anwendung 32 bit compiliert werden.

Hab mal um den Fehler besser zu lokalisieren eine Kleine Testanwendung geschrieben und eine Oracle datenbank genommen bei 32 bit tritt der Fehler auf bei 64 bit nicht. Der Fehler tritt genau beim Schleifen kopf auf und auch erst nach einer gewissen Zeit wenn laut Dignostic Tool die Anwendung über 3,8 GB Ram verwendet. der Fehler lautet > Fehlermeldung:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt Bin am überlegen für die Anwendung zwei binary anzulegen eine 32-bit wenn umbedingt benötigt und eine 64 bit variante oder gibt es Programmiertechnisch noch ne möglichkeit

15.02.2019 - 16:59 Uhr

verwendetes Datenbanksystem: diverse

Hi, ich schreibe momentan eine Anwendung die diverese Datenbanksysteme unterstützen soll. Als Schnittstelle nutze ich deshalb OLEDB.

In der Anwendung mache ich vorher ein SELECT COUNT (*) from Table um die Anzahl der Datensätze der zu bearbeiteten Tabelle zu ermitteln, den bei zu grossen Tabellen(Habe mich für 10.000 Datensätze entschieden) sollen die Daten einzeln bearbeitet werden. Dies hat den Grund ich möchte eine OutOfMemory-Exception vermeiden. Jedoch fand ich Raus das in der Schleife in der ich den Reader abarbeite der speicher mit jeder Iteration wächst. Gibt es eine Möglichkeit die Daten vom Reader nach jeder Iteration vom Speicher zu löschen?

06.02.2019 - 21:03 Uhr

hi du hast zum einem das Event ProgressChanged, in diesem wird der Wert der Progressbar erhöht. Damit aber der BGW weiss wann du sich der Progress ändert (Der BGW ist ja nicht allwissend) musst du in dem Code Abschnitt in dem du einne Änderung des Progress hast die Methode des BGWs ReportProgress aufrufen der gibts du als Parameter den Wert mit.

Die Zusammmenfassung im DoWork wird die Methode ProgressReport auf gerufen mit dem Statuswert , was das Event ProgressChanged aufruft. Das Event erhöht dann den Value der Progressbar

06.02.2019 - 19:47 Uhr

Hi,

ich bin mir nicht 100% sicher aber musst du nicht bei dem Connection String die Adresse mit ggf. der Instanz angeben. Du sagst ja das mehrere auf mit der Anwendung auf die selbe Datenbank zugreifen sollen, sprich die Datenbank ist nich Lokal auf dem Rechner auf dem die Anwendung läuft. Ich kenne es halt von OLEDB das man in dem Connectionstring den Parameterserver mit der IPv4\Instanz angibt falls keine Seperate Innstanz läuft reicht auch die IP versuchs mal damit.

07.04.2015 - 20:33 Uhr

So hab nun neues Problem mit dem VSTemplate datei auf ein Assembly verwiessen wird, welches nicht vorhanden sein soll.

Hab auch die extension manifest auf version 12 geändert und was google sagt hab ich auch schon ohne erfolg versucht

07.04.2015 - 18:46 Uhr

Hi,

hab ein Problem mit Visual studio 2012 bzw XNA. Und zwar wenn ich ein XNA Projekt erstellen möchte bekomme ich immer die Fehlermeldung: > Fehlermeldung:

Beim Erstellen des untergeordneten Projekts "WindowsGame1" ist ein Problem aufgetreten. Die Projektdatein /pfad/ kann nicht geöffnet werden.

Ein Projektuntertyp fehlt.
Untertyp:{'6D335FA-9D43-41b4-9D22-F6F17C4BE596}' wird von dieser Installation nicht unterstützt.

Hab XNA schon neuinstalliert. Allerdings ohne erfolg.

Also ich nutze Visual Studio 2012 und XNA 4.0.4 for VS2012 und das unter Windows 8.1.

Hab XNA auch nach Anleitung neuinstalliert.

11.02.2015 - 23:32 Uhr

Hi

okay habs hin bekommen. Die Api war ein nicht tolle dokumentiert und veraltet musste diese anpassen. Bekomme also nun ein XML welches die Produktinformation beinhaltet welches nur noch geparst werden musst. Aber ich habe ein Problem eine Information steht nicht in der XML und zwar der Preis hat wer evtl ne idee wie ich den noch bekomme.

So ein 2tes problem ist das herausfinden der asin( produkt id von amazon) aus der url. Wie gesagt möchte das man die url in ne textbox schreibt und daraus dann das produkt ermittelt wird.
Da dachte ich mir das ich den string splitte immer wenn ein "/" kommt und diese teil strings halt in ein array schreibe, da ich gesehen hab das die asin immer an nach dem 3ten "/" kommt, allerdings weiss ich nicht obs nicht evtl eine saubere lösung gibt wenn da einer eine idee hat kann er sie ruhig äusssern

mfg

Soier

07.02.2015 - 21:19 Uhr

Hi

danke für die antwort. Habs mir nun durch gelsen, also ich brauche das "GET". Allerdings bekomme ich das nicht innerhalb des events zum laufen. Kannst mir da weiter helfen

06.02.2015 - 22:02 Uhr

Hi,

ich weiss nicht ob es das richtige topic ist aber ich hab ne Frage bezüglich amazon Api.

Und zwar möchte ich in C# Ein Geschenkeverteiler programmieren mit Hilfe der Amazon-Api. Dafür habe ich mir vorgestellt, das der nutzer in einer Textbox die Url von einem Produkt eingibt. Durch drücken eines Buttons, soll dann über die eingebene Url das Produkt rausgesucht werden und Titel,Preis und Artikelnummer sollen dann ausgeben werden und anschliessend in eine Locale Datenbank gespeichert werden.

Dafür habe ich mir die Amazon Product Advertising API, habs auch geschafft diese ein zu binden. Nun fehlt nur noch das implemntieren der Funktion, allerdings komm ich nicht weiter, da die Dokumenation (zu mindest was C# betrifft) mir nichts genaueres erläutert. Wäre nett wenn einer mir dabei helfen könnte

mfg

Soier

26.01.2015 - 22:31 Uhr

Hi

ich programmiere gerade in c# wpf eine kleine Applikation. In dieser hat der User die Möglichkeit in eine Textbox einen Preis einzugeben, dieser Preis soll dann in eine Datenbank als Double gespeichert werden. Allerdings gibts immer die Fehler Meldung "Fehler beim Konvertieren des varchar-Datentyps in float."


String preisstring = preisein.Text;
float someNumber;
someNumber = float.Parse(preisstring);


con.ConnectionString = "Data Source=localhost;Initial Catalog=santa;Integrated Security=False;User ID=santa;Password=santa;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";

            cmd.CommandText = "INSERT INTO wuensche(Artikel,Preis) Values ( '" + artikel + "', '" +someNumber +"')";
            //cmd.CommandText = "select * from person";
            cmd.Connection = con;
            con.Open();
            if (cmd.ExecuteNonQuery() > 0)
                Console.WriteLine("Windows geht");
            con.Close();


Die Fehler meldung komm bei der if anweisung.

Meine vermutung ist das es am parsen liegt, da er mit komma parst antatts mitm floating point.