Laden...

Forenbeiträge von sheitman Ingesamt 1.047 Beiträge

13.09.2006 - 10:40 Uhr

Original von Borg
Ich würde aber nicht die Liste kopieren und einzelne Elemente löschen, sondern einfach nur die Elemente mischen.

danke. sehr schöne und so gesehen elegante lösung. =)

13.09.2006 - 10:33 Uhr

Original von BAUHAUS
@Sheitman & Dexter:
Ja das kannte ich schon, aber des zeigt ja nur wie man eine Varible zugreifbar macht und nicht eine Funktion so wie ich es machen will.

deiner Antwort entnehme ich mal das du dir nicht den beitrag hier angeschaut hast. da geht es nicht darum auf eine variable zuzugreifen, sondern wie die 3 schichten aufgebaut sein könnten und wie sie dann zusammen kommunizieren...

12.09.2006 - 18:03 Uhr

ich hab mal was gebastelt


private void btnRandomize_Click(object sender, EventArgs e) {
    int size = lstNamen.Items.Count;
    List<String> liste = new List<string>(lstNamen.Items.Count);
    foreach (String s in lstNamen.Items) {
        liste.Add(s);
    }
    Random r = new Random();
    lstRandomized.Items.Clear();
    for (int i = 0; i < size; i++) {
        int index = r.Next(liste.Count);                 
        lstRandomized.Items.Add(liste[index]);
        liste.RemoveAt(index);
    }            
}

ich hab die namen nochmal zwischengespeichert, damit meine ursprüngliche liste nicht verloren geht

durch

r.Next(liste.Count)

begrenze ich den maximalwert des indexes auf die aktuelle länge von liste
das item kommt dann in meine zweite listbox und wird aus der ersten entfernt, wodurch diese um 1 kürzer wird

auf dein problem bezogen müßte dein code so aussehen

Random r = new Random();
for(int i=0;i<array.Count;i++) {
    int index = r.Next(listname.Items.Count);
    listausgabe.Items.Add(listname[index]);
    listname.Items.RemoveAt(index);
}
12.09.2006 - 17:13 Uhr

allerdings mußt du noch beachten, das der fall eintreten kann (und sicherlich auch wird), dass 2x der gleiceh name hinzugefügt wird
momentan merkst du dir nämlich nicht, welche namen schon hinzugefügt sind
bzw. du behandelst diese situation nicht

11.09.2006 - 15:05 Uhr

hab mal was rudimentäres gebaut

so, oder so ähnlich, könnte man das anwenden
mußt das ganze natürlich noch auf deine konkrete anwendung anpassen

wichtig ist nur folgendes:
alle berechnungen gehören nach backgroundWorker1_DoWork
alle änderungen an controls (text, farbe etc.) gehört nach backgroundWorker1_ProgressChanged
dem kannst du auch ein eigenes object mitgeben, das köntne dann z.b. den text für die statusleiste enthalten oder eigenen typen mit noch mehr infos =)

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

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
            BackgroundWorker worker = (BackgroundWorker)sender;
            worker.ReportProgress(0);
            Thread.Sleep(800);
            for (int i = 1; i <= 100; i++) {
                Thread.Sleep(100);
                worker.ReportProgress(i);
            }
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) {
            int p = e.ProgressPercentage;
            switch(p) {
                case 0:
                    Cursor = Cursors.WaitCursor;
                    lblStatus.Text = "Lade Projekt";
                    break;
                case 1:
                    lblStatus.Text = "Rechne1...";
                    break;
                case 30:
                    lblStatus.Text = "Rechne2...";
                    break;
                case 70:
                    lblStatus.Text = "Rechne3...";
                    break;
                case 100:
                    lblStatus.Text = "Laden fertig.";
                    Cursor = Cursors.Default;
                    break;
            }
            progressBar1.Value = e.ProgressPercentage;
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {


        }

        private void button1_Click(object sender, EventArgs e) {
            backgroundWorker1.RunWorkerAsync();
        }
}

11.09.2006 - 12:16 Uhr

hm mal schaun

also das eine setzeStatusleiste() aus machWas() kannst du ja in ladeProjekt() nach machWas() verschieben

dann würde ich dein machWas() in einem thread abarbeiten

was macht denn das setzeStatusleiste() in den einzelnen rechneX()?

die aufrufe solltest du jedenfalls per invoke an die controls weitergeben... weiß ja nun auch nicht wie du deine methoden aus klassensicht aufgeteilt hast...

11.09.2006 - 10:32 Uhr

ja, so hab ichs auch verstanden. wobei ich bei dem timeout mir nicht sicher bin.

dein ansatz mit dem thread ist also richtig 😉

11.09.2006 - 09:08 Uhr

vielleicht solltest du eher überlegen warum das nicht gezeichnet wird und dann entsprechende gegenmaßnahmen ergreifen...

ich nehme mal an das du dein projekt im ui-thread lädst, und der dadurch blockiert wird...

lager das laden deines projektes in einen thread aus, das sollte helfen.

11.08.2006 - 14:08 Uhr

Hm, ist denn die 2. Form bei dir nicht bedienbar?

Normalerweise würde ic hdavon ausgehen sie ist es denn du hast ja deine langen Operationen schon in einen seperaten Thread ausgelagert.
Wenn du nun das 2. Form aus dem Hauptthread (dem GUI THread) aufrufst, dann läuft der ja auch mit in dem drin. Von daher sollte die also auch nciht blockieren.

11.08.2006 - 12:24 Uhr

@stube
du könntest versuchen alle click-events über eine methode zu behandeln...
d.h. du bindest alle buttons mit den rechenzeichen an nur eine click-methode und mußt dort vorher auswerten was denn nun für eine operation gewünscht war

vielleicht kannst du nem button ja so ne information mitgeben 🙂

zum Partial : Das wird bei mir automatisch generiert, wenn ich eine neue Web-anwendung erstellen lasse ! Ist das irgendswie schlimm,oder verlangsament ?

ich glaub es ging eher darum was denn partial bedeutet

11.08.2006 - 12:19 Uhr

@lordhessia
heißt das nun die haben den perl5compiler in java nachgebaut oder rufen die wirklich perl auf das den ausdruck dann auswertet?

da müßte ja heißen das dem framework ein kleines perl beiligt o.O

abgesehen davondas zu runtime dann noch perl ausgeführt wird o.O

p.s.
sorry für ot

11.08.2006 - 11:49 Uhr

Zur Unterscheidung gibt es doch die verschiedenartigen Symbole vor den Namen.

ja sicherlich

aber wenn du nicht genau weißt wie das event heißt, bedeutet das ja ich muß durch die ganze liste scrollen wo methoden, properties und events zusammen gewürfelt sind
dsa kann schon mal sehr lang werden

viel schneller würde das ja gehen wenn man nur durch die liste der events scrollen könnte

zudem fällt mir immer mehr auf das die doku rel. schlecht zu habdhaben ist
ich hab vorher java gemacht und da hatte ma nz.b. auch eine übersicht welche methoden aus den oberklassen geerbt wurden
hier sieht man das nicht... z.b. hab ich in der textbox nach dem event gesucht was in textboxbase definiert war... rein von der doku hät ich das nicht mitbekommen
nur intelisense verwies halt auf die klasse

find ich net so toll 😕

java-api-docu imho übersichtlicher

11.08.2006 - 11:37 Uhr

Original von Lord Hessia
Die Idee mit Perl dinde ich einen interessanten Ansatz. Aber wird zur Auswertung von regulären Ausdrücken in C# nicht sowieso Perl verwendet? Also in Java ist das zumindest so... willst du damit sagen das java dann einen perl-interpreter startet um die ausdrücke auszuwerten?

sorry aber sowas kann ich nicht glauben

die regulären ausdrücke in java haben afaik nur die perlsyntax übernommen + paar eigne sachen
vielleicht verwechselst du da was

11.08.2006 - 10:00 Uhr

Original von plucked
IntelliSense wär auch ein wenig unübersichtlich wenn dort alle auf dem Computer in C# benutzbaren Klassen aus allen Libraries aufgelistet wären. 🙂

nun ja wenn du alle klassen einbindest dann würde das sogar passieren^^

ich find aber das intellisense sowieso arg unübersichtlich da z.b. event mit properties und methoden vermischt sind

wenn man etwas sucht aber nicht genau weiß wie es heißt, sucht man sich bald nen wolf 🙁

gibts da ein addin was das bissl "aufräumt"?

11.08.2006 - 09:56 Uhr

Original von Jules
Das SourceGrid2 ist toal super, kann ich aber leider nicht benutzen, weil man das wohl nur für Open Source Software benutzen darf.

wo steht das?
ich hab keinerlei solch einschränkung gesehen

10.08.2006 - 18:10 Uhr

Es gibt eine Klasse Registry bzw. RegistryKey.

Schau dir da mal die Beispiele dazu an wie man die benutzt, ist relativ simpel.

Du könntest dann schaun ob unter

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Word\InstallRoot

ein Key namens Path existiert und nen Wert hat.

Da steht drin wohin dein Word installiert wurde.

Wenn das fehlt wirds vermutlich nicht drauf sein.

Wenn du nur prüfen möchtest ob irgendein Word installiert ist müßtest du das bissl anders machen... aber dawolltest du ja nicht. 🙂

10.08.2006 - 13:23 Uhr

Original von Xqgene
Hi,

schon was von
>
gehört? 😉

guckt dort mal speziell das <configuration> Element und dann "Runtime Settings Schema"

ah, danke 🙂

wie macht man das dann wenn man kein config file benutzen kann?
z.b. wenn ich ein com-addin für word habe (nur ne dll halt)

10.08.2006 - 12:08 Uhr

ich muß sagen das ich variablen auch gerne mit typinformationen "schmücke"

intellisense schön und gut aber auf einen ausdruck nutzt einem das wenig bzw. in einem editor der das nicht hat 😉

zudem hab ich meist das problem passende namen für objekte zu finden, da kommt dann schon gern mal ein o davor^^
oItem, oCommandBar etc.

10.08.2006 - 10:51 Uhr

Original von absalom
An sich eine gute Idee, aber web.de verlangt für die IMAP Unterstützung Geld.

Trotzdem vielen Dank für die Vorschläge
absalom

kann ich mir garnicht vorstellen

wo genau steht das?

hab unter https://www3.hilfe.freemail.web.de/freemail/e-mail/imap/allgemeines/ da jetzt auch nix finden können

probier doch mal aus ob du mit outlook express drauf kommst über imap

10.08.2006 - 10:01 Uhr

kannst du mir des rätsels lösung per pm schicken? würde mich nun doch schon interesseiren wie die das verschlüsselt haben 🙂

10.08.2006 - 09:57 Uhr

mußt mal nach nem komerziellen gridcontrol schaun...

z.b. sandgrid von http://www.divil.co.uk/net/ hatte afaik ein screenshot da hat man excel mit nachempfunden

10.08.2006 - 09:55 Uhr

hm, würde mich auch interessieren 🙂
frage is ja dan nauch wie sagst du der exe sie möge bitte in dem verzeichnis lib nach den assemblies suchen o.O

10.08.2006 - 09:52 Uhr

ich verwende auch dein _
wobei ich überlege mir die geschichten mit m_ p_ etc. noch mal anzuschauen weil ma nda nochmal ne gute trennung von parametern und membern z.b. hat


private string name;

public string Name {
    get { return name; }
}

find ich unschön
geht zwar aber das kann schon mal verwirren bzw. auch mal fix zu verwechslungen führen (tippfehler, intellisense) oder man kommt durcheinander...
wer fxcop einsetzt wird glaub da auch seine freude mit haben^^

letzen endes muß man eh sehen was die firma bzw. die andere nmitarbeiter vorgeben
und für einen persönlich soltle man das wählen womit man ohne probleme am besten zurecht kommt

10.08.2006 - 09:45 Uhr

alternativ könntest du auch imap benutzen

10.08.2006 - 09:30 Uhr

@lohokla
ja sicherlich liegt das irgendwie daran

aber das steckt alles in der dll eines drittanbieters...

da kann er das nicht mal eben ändern...

darum sollee er den hersteller kontaktieren
eventuell eine inkompatibilität mit dem cardreader? wer weiß das schon...

09.08.2006 - 15:50 Uhr

ich weiß solche antworten können nerven aber benutz bitte mal die suchfunktion vom forum.
ein stichwort wäre httprequest.

dazu gabs schon ne menge themen.

09.08.2006 - 15:12 Uhr

wenn es wirklich codiert ist dann kann man dir nur schwer helfen ohne die dll bzw. den dort enthaltenen algorithmus zu kennen

ist die dll in c# bzw. einer anderen managed sprache geschrieben?
dann könntest du ja mal schaun ob du die dll mit reflector öffnen kannst um einen kleinen blick auf den quellcode zu werfen

09.08.2006 - 14:07 Uhr

Original von Lector
OK das Beispiel von vorhin geht auf allerdings gibts immer noch Ungenauigkeiten...
wo eigendlich 0.0 rauskommen sollte und mit der alten Formel auch rausgekommen ist kommt jetzt 0,0217706821 raus......

wo würde denn 0 raus kommen?

gut möglich das dein ergebnis auf die integererdivision zurück zu führen ist
wenn man gleitkommazahlen verwendet hat man immer einegewisse ungenauigkeit drin, da sich nicht alle zahlen als gleitkommazahl exakt darstellen lassen

09.08.2006 - 13:50 Uhr

also wenn ich das so hier mache

double height = 200;
double lHeight = 15;
double lTop = 108;
double width = 200;
double lWidth = 17;

double sin, cos;
sin = -(height / 2 - lHeight / 2 - lTop);
sin /= (height / 2 - lWidth / 2);

komm ich auch auf dein genaues ergebnis

von daher einfach mal alles in ein double casten


int i = 1;
double d = (double)i; 

08.08.2006 - 15:06 Uhr

Hallo,
naja ich bezweifel, das man alleine in 2 Wochen ein Prog. schreiben kann, was eine Firma wirklich gebrauchen kann.
Denn die Anforderungen, die eine Firma (nicht nur ein Mitarbeiter) an eine Software stellen, sind meistens enorm, und in so kurzer Zeit eigentlich nicht zu realisieren. kommt halt drauf an wie umfangreich die software ist
keiner erwartet das du ein 2. office programmierst... meist sind es ja db-anwendungen um irgendwas zu verwalten und da kommt dann halt sowas mit rein welche db du auswählst und warum etc.

aber vor der frage "brauchen die leute sowas wirklich" stehe ich auch gerade

Wie gesagt, es muss etwas sein, was eine Firma potentiell gebrauchen kann, dann kann meine Firma das gebrauchen. Man muss der IHK nur plausibel machen können, dass die Firma es braucht. Wenn ich sage, dass das meine Idee für ein Projekt ist, dann sagt die, dass sie das auch gerade rein zufällig dringend braucht und auch bereits ein Kundenwunsch dazu geäußert wurde...
Ihr versteht denke ich, was ich damit meine.

das entspricht ja dann das pferd von hinten aufzäumen...bei was für einer firma bist du denn und was warn so die tätigkeiten dort?

08.08.2006 - 15:00 Uhr

Ok also prüf mal ob du die System.dll und die System.Data.dll eingebunden hast.
Vom Compact Framework wird ja anscheinden nur die MSCORLIB eingebunden.

Wenn die alle drin sind und du immernoch Fehlermeldungen hast dann schauen wir mal weiter.

08.08.2006 - 14:52 Uhr

Eigentlich ist die Fehlermeldung ja recht aussagekräftig...

Kann es sein das du Visual Studio 2003 verwendest bzw. das .NET Framework 1.1?

Wenn ja dann schau mal nach ob es noch einen Connector unter ..\bin.NET 1.1\ oder so gibt, denn du wolltest den für .NET 2.0 verwenden

Und diese Referenziert eine System.dll der Version 2.0 bzw. eine System.Data 2.0 (siehe Fehlermeldung)
Daher kam der Fehler.

Eventuell mal auf der MySQL Homepage nach einer Version für .NET 1.1 schaun falls du sie in dem herunter geladenen Archiv nicht findest.

Nachtrag: Ok ich sehe grad anscheinden benutzt du doch das Visual Studio 2005.
Dann prüfe mal ob die System.dll und die System.Data.dll unter Referenzen eingetragen ist.

Unter http://dev.mysql.com/downloads/connector/net/1.0.html gibts akutelle Version vom Connector (falls du nicht schon hast).

08.08.2006 - 13:27 Uhr

wozu machst du überhaupt diese umwandlung?
normalerweise stellt man nicht die zeichen dar (denn da können z.b. auch steuerungszeichen drin sein) sondern die hexwerte der einzelnen bytes

alles andere kann letzlich zu konvertierungsproblemen führen

encoding.default ruft ja den zeichensatz ab der für dein momentanes windows eingestellt ist... das kann auch wieder zu problemen führen da die nicht überall gleich sind

08.08.2006 - 12:57 Uhr

@quallo
ja aber diese frage kann dir doch dein betrieb am ehesten beantworten

geh einfach mal zum chef und frag ihn ob irgendwelche tools neu erstellt, konvertiert oder angepaßt werden müßen

wenn es da nichts gibt frag mal die mitarbeiter (falls du interne abteilung bist) ob die irgendwas brauchen

08.08.2006 - 12:49 Uhr

die antwort ist eigentlich relativ simpel

schaun wir das mal am beispiel von ASCII an:
ASCII ist als 7 Bit Zeichensatz definiert, d.h. der bytewert der einzelnen zeichen kann von 0 - 127 gehen.

was passiert nun wenn man ein zeichen umwandeln möchte, was als wert z.b. 128 hat?

ich hab das ganze mal getestet mittels


byte[] b1 = { 126, 127, 128, 129, 130 };
string s = Encoding.ASCII.GetString(b);
byte[] b2 = Encoding.ASCII.GetBytes(s);

resultat war das b2 folgender weise belegt war:

byte[] b2 = { 126, 127, 63, 63, 63 };

d.h. also beim umwandeln zum string wird bei allen zeichen die höher sind als 127 ein ? ausgegeben, was der 63 entspricht

bekräftigt wird diese vermutung durch den wert von s
dieser ist "~???"

daher das problem das byte[]>string>byte[] probleme bereiten kann

08.08.2006 - 11:50 Uhr

das liegt daran das oledb keine benannten parameter kennt

normaler weise ist es schon ein wunder dsa der die @-parameter schluckt
aber wie wir letzens festgestellt haben geht das wohlauch nur (sofern mir bekannt) unter access und dem sql server

normaler weise setzt man an die stelle wo ein parameter kommt ein ?
beim ausführen werden diese dann entsprechend der reihenfolge der parameter in der parameterliste eingesetzt

daher dein id an das ende 🙂

08.08.2006 - 11:44 Uhr

bei den umwandlungen müßtest du halt auf das encoding achten und ob du den wert des bytes darstelle möchtest oder das entsprechende zeichen aus dem ascii zeichensatz

normaler werden nur die werte der bytes als string genommen also z.b.
7e716d0e702df0505fc72e2b89467910

08.08.2006 - 11:00 Uhr

Ich versteh nicht ganz den Sinn deiner HashInString Methode.

Was genau wilslt du mit ihr denn machen?

Auch finde ich es unschön das nach dem "Test" der Eingabestring den Hashwert voran geschrieben hat. Was für einen Sinn soll das denn ergeben?

08.08.2006 - 10:47 Uhr

naja schau mer mal... bestimmte richtlinien muß man aj auch einhalten und vom umfang her muß es halt auch passen 🙂

08.08.2006 - 10:44 Uhr

OleDbParameterCollection.Add-Methode (String, Object)
HINWEIS: Diese Methode ist mittlerweile veraltet.

Fügt der OleDbParameterCollection einen OleDbParameter mit dem angegebenen Parameternamen und -wert hinzu.

also er fügt ihnen eigentlich schon einen wert hinzu

aber wie gesagt funktioniert das mit den benannten parametern überhaupt?

bekommst du irgendeine fehlermeldung zurück?

ansonsten probier mal


public void Update(BaelleInfo info) {
    try {
        con = new ConnectionSettings();
        OleCon = new OleDbConnection(con.GetConnectionString);
        OleCon.Open();
        cmd = new OleDbCommand();
        cmd.Connection = OleCon;
        cmd.Parameters.Add("@Hersteller", info.Hersteller);
        cmd.Parameters.Add("@Bezeichnung", info.Bezeichnung);
        cmd.Parameters.Add("@Farbe", info.Farbe);
        cmd.Parameters.Add("@Kern", info.Kern);
        cmd.Parameters.Add("@RG", info.RG);
        cmd.Parameters.Add("@Differential", info.Differential);
        cmd.Parameters.Add("@Gewicht", info.Gewicht);
        cmd.Parameters.Add("@Oil", info.Oil);
        cmd.Parameters.Add("@ImageUrl", info.ImageUrl);
        cmd.Parameters.Add("@BallID", info.BallID);

        string sql = "UPDATE Baelle SET    "+
                             " [Hersteller] = @Hersteller, "+
                             " [Bezeichnung] = @Bezeichnung, "+
                             " [Farbe] = @Farbe, "+
                             " [Kern] = @Kern, "+
                             " [RG] = @RG, "+
                             " [Differential] = @Differential, "+
                             " [Gewicht] = @Gewicht, "+
                             " [Oil] = @Oil, "+
                             " [ImageUrl] = @ImageUrl "+
                     "WHERE"+
                             " [BallID] = @BallID ";
        cmd.CommandText = sql;
        cmd.ExecuteNonQuery();
    } catch(Exception exc) {
        System.Diagnostics.Trace.WriteLine("[UpdateBall] Error: "+exc.Message);
    } finally {
        cmd.Dispose();
        OleCon.Close();
    }
}

ich hab nur deine BallID an das ende der parametliste gesetzt

08.08.2006 - 10:34 Uhr

hehe bin auch grad dabei mir ne projektarbeit zu suchen
aber zum glück gibts intern in der firma da paar sachen die mal umgesetzt werden müßten

mal schaun was dann die leute der ihk dazu sagen^^

08.08.2006 - 09:50 Uhr

klappt dsa bei oledb mit den benannten parametern auch?

kannst du mal schaun was für ein query wirklich zur db geschickt wird?
müßte über den debugger auch rausfindbar sein

07.08.2006 - 16:12 Uhr

also wenn dein mauscursor in der textbox stehst und du einen rechtsklick machst, dann kannst du doch von der textbox die position des textcursors abfragen, oder nicht?

und dann fügst du da deinen text ein

mußt du halt, wenn du ne große textbox hast und den text an einer anderen stelle einfügen möchtest wo dein aktueller textcursor steht, erstmal die linke taste drücken, damit du dorthin den cursor setzt, und dann über rechte teste das menü aufrufen um den text einzufügen

das ist das standardverhalten nun mal

p.s. gruß nach leipzig (bin da in der "nähe" aufgewachsen) 🙂

07.08.2006 - 15:22 Uhr

probier mal SelectionStart

Ruft den Anfangspunkt des im Textfeld markierten Texts ab oder legt diesen fest.

07.08.2006 - 14:32 Uhr

solltest dich trotzdem an deren support wenden. immerhin bist du ein potenzieller kunde 😉

nachtrag: mal die dll im reflector geöffnet und mir scheint die bauen da dynamisch ein modul auf für den pinvoke... also definitiv kontaktiere den hersteller
der kennt das ding und kann dir am ehesten helfen

07.08.2006 - 14:06 Uhr

deine c# lib ruft aber per pinkvoke mehtoden aus einer c lib auf

dein problem ist, das die typen die bei der deklaration der funktion in c# angegeben wurden, wohl nicht zu denen der c typen paßt, denn die größe vom stack scheint zu klein oder zu groß zu sein

da du diese assembly wohl gekauft hast, solltest du dich an den support wenden

07.08.2006 - 10:36 Uhr

hm, könntest du den quellcode für deinen webservice mal posten? brauhc sowas eventuell auch demnächst... kannst ja alles bezüge auf interne funktionen mit platzhaltern markieren 🙂

07.08.2006 - 10:34 Uhr

Wie kann ich abfangen, dass eine alte Office Version auf dem Rechner installiert ist?

naja du könntest einfach eine instanz erzeugen und die version abfragen 🙂

aber in die registry schaun wäre wohl etwas schneller und resourcenschonender 🙂

07.08.2006 - 10:24 Uhr

was genau weißt du da nicht?
müßtest ja nur die einzelnen zellen wider auslesen, dir ein statement zusammen basteln und das abschicken