Laden...

Forenbeiträge von amozi Ingesamt 120 Beiträge

19.01.2006 - 12:50 Uhr

Hallo zusammen,

kann mir jemand mal sagen wo ich das Excel-Icon finden kann (oder wird das nicht zur Verfügung gestellt). Ich möchte das nämlich in einem Toolbar-Button einbinden.

Danke

17.01.2006 - 08:50 Uhr

Guten Morgen dschmoegner,

vielen Dank für den hilfreichen Code.

amozi

16.01.2006 - 22:54 Uhr

Hallo zusammen,

da meine Diplomarbeit dem Ende zu geht und mir noch ein Kapitel fehlt, will ich mal direkt nachfragen wie man Arrays nach Excel exportieren kann. Ich habe von diesem Gebiet überhaupt keine Ahnung und weiß nicht nach welchen Stickpunkten ich nachschlagen muss?
Aufgabenstellung ist zwei Arrays in eine vom Programm erzeugte Excel-Datei (in die Spalte A und B) einzufügen. Ich würde mich sehr freuen wenn Codebeispiele oder Webadressen mit Codebeipspielen gepostet werden würde. Eigentlich ist dies nicht meine Art, aber wenn man unter Zeitdruck steht und die Doku der Arbeit noch aussteht, wird man dazu gezwungen.

Vielen Dank

11.01.2006 - 10:18 Uhr

Hallo Programmierhans,

ich glaube das ich die Problematik wiederum nicht ausreichend erläutert habe. Und zwar soll die ersten 600Pixel überhaupt nicht scrollbar sein. Der gepostete Code von dir setzt einfach die Bildlaufleiste an die angegebene Position.
Ich will das bei der angegeben Position die Bildlaufleiste auch am Anschlag ist und eine Verschiebung zwischen 600-2000 ermöglicht.

Danke im voraus für die Tipps.

10.01.2006 - 13:10 Uhr

Hallo Programmierhans,

Nein, nicht so ganz. Nehmen wir an, wir haben einen Clientbereich von 800Pixel und eine Gesamtgröße von 2000Pixel. Wenn ich am Ende angelangt bin, also 1200 Pixel gescrollt wurde, möchte ich die Möglichkeit haben, nur einen bestimmten Bereich zurück zuscrollen. Zum Beispiel vom Ende bis zu Pixel 600 d.h. die ersten 600Pixel sind dann im Clientbeich nicht mehr ersichtlich.
(Ich bin immer noch auf der Suche nach einer geeigneten Vorgeweise.)

Danke

10.01.2006 - 09:54 Uhr

Hallo,

ich bin jetzt einige Zeit dabei ein Panel-Control für einen bestimmten Bereich zurückscrollen zu lassen, was mir letzt endlich noch nicht gelungen ist.
Ich benutze die Eigenschaft 'AutoScrollMinSize' und setze die X-Koordinate mit der Grösse des Scrollbereichs.
Was mache ich da falsch? Würde mich freuen wenn ich paar Tipps bekommen könnte.

07.01.2006 - 12:42 Uhr

Hallo C#'ler,

ich habe mich lange nicht gemeldet aber jetzt brauche ich eure Unterstützung.
Und zwar geht es darum, dass ich einen Betrachtungsbereich von einem selbst erstellten Bitmap auswählen möchte d.h. ich möchte mit einem definierten Rechteck (der an der Maus hängt) auswählen und dies in einem anderen Bitmap darstellen. Ich möchte gerne erfahren, wie man die Koordinaten des auswählten Bereichs ermitteln kann und wie der Rechteck zu realisieren ist.
Kann mir jemand hilfreiche Tipps geben? Würde mich freuen

Danke

08.12.2005 - 12:53 Uhr

Hallo,

seit heutmorgen habe ich mit einem sehr komischen und nervenauftreibenden Phänomen zu tun. Und zwar ist es so: Ich habe einen ganz normalen Timer mit einer ents. Routine. In dieser Routine wird wiederum eine Funktion "Zeichnen()" aufgerufen, wobei die Aufrufrate(Intervall) auf 50 ms festgelegt wurde. Jetzt ist es so, dass in der "Zeichnen"-Funktion vier if abfragen vorhanden sind. Bei vier oder drei Abfagen (if-else if-else if-else if) fängt das Timerintervall an, sich zu variieren. Aber bei zwei (if-else) bleibt es constant wie es festgelegt wurde. Kann mir jemand sagen wovon das abhängig sein kann?
Und noch was, die Zeit für "Zeichnen()" ist definitiv kleiner als das Timerintervall (Faktor 2).

(Soll ich vielleicht bischen Code posten?)

Danke

28.11.2005 - 12:40 Uhr

Hallo,

gibt es dazu keine Ideen, wodurch dieses Problem zustande kommt. Es wäre sehr hilfreich.

28.11.2005 - 11:06 Uhr

Hallo zusammen,

ich komme gleich mal zur Sache. Unzwar habe ich 2 Pictureboxen in einem Panel, die zur Laufzeit mittels AutoScroll verschoben werden. Wenn ich jetzt die Location des ersten PictureBox zur Laufzeit ändere und an den zweiten Picturebox hinterdranghänge, wird zwar die Änderung der Location vorgenommen aber das Scrollen für diesen Picturebox nicht mehr! Kann mir jemand sagen, wie ich dieses Problem beseitigen kann.
(Ich möchte eine Art Ringpicture bauen)

Danke

24.11.2005 - 11:55 Uhr

Hallo,

obwohl ich wohin gedacht habe die Thematik verstanden zu haben, sieht es so aus, dass bei mir immer noch hängt.
Unzwar habe ich mit dem folgenden Code die Felder einen statischen Array(this.anzSigAuswahl=3) dynamisch gemacht.

private ArrayList[] offlineSigDaten;
this.offlineSigDaten = new ArrayList[this.anzSigAuswahl];
for(int i=0; i<this.anzSigAuswahl; i++)this.offlineSigDaten[i] = new ArrayList();

Jetzt möchte ich eigentlich zwei dynamische Felder mit diesem statischen Array machen. Trotz Codebeispiel von
Xqgene ist es mir aber immer noch nicht gelungen.

this.test = new ArrayList[this.anzSigAuswahl,/*dynamisch aber wie*/];for(int x=0; x<this.anzSigAuswahl; x++)
for(int y=0; x< /* ??? */; y++)
this.test[x,y] = new ArrayList();

Wie führt man eigentlich dann den Abruf der Daten aus?
Würde mich freuen wenn ich wieder Unterstützung kriegen könnte.

24.11.2005 - 10:20 Uhr

Hi citizen.ron und Xqgene,

vielen Dank für die ausführliche Infos.

24.11.2005 - 10:07 Uhr

Hallo zusammen,

ich wollte mal fragen, ob es möglich ist eine 3-dimensionale ArrayList zu erzeugen. Bei meinen Versuchen geht es nämlich nicht. In der Doku steht nichts das es nicht gehen sollte. Kann mir jemand helfen?

private ArrayList[,] offlineSigDaten;

this.offlineSigDaten = new ArrayList[this.anzSigAuswahl];
for(int i=0; i<this.anzSigAuswahl; i++)this.offlineSigDaten[i] = new ArrayList();

Danke

23.11.2005 - 14:18 Uhr

Thank you

23.11.2005 - 13:56 Uhr

Hallo,

ich bin mir bewusst, dass die folgende Frage sehr einfach ist aber nur für die Leute die auch in C# fit sind. Unzwar geht es um das Timer-Event. Ich möchte gerne die Event-Funktion eines Timers zuerst einmal per Funktionsaufruf aufrufen. Aber dies gelingt mir nicht d.h. ohne Start() u. Intervallfestlegung.
Erst später wird dieser Timer aktiviert, was ich wenigtens noch hinbekomme.

public  System.Windows.Forms.Timer onlineTimer;
private void onlineTimer_Tick(object sender, EventArgs e)
{
}

Danke

20.11.2005 - 21:38 Uhr

Hallo,

ich habe dazu noch eine primitive Frage, worauf ich selbst keine Antwort habe. Wird bei einem Timer-Event die anderen (nebenbei) laufenden Threads angehalten oder werden die in kleineren Zeitintervallen quasi parallel durchgeführt. Ist wichtig, weil ich eine zeitkritische Hardwareabfrage damit realisiere.

Vielen Dank

18.11.2005 - 16:29 Uhr

Hallo Taxi4110,

ich weiss auf deine Frage die Antwort nicht, aber ich wollte keinen neuen Beitrag eröffnen, weil ich auch eine Frage in dieser Richtung habe.
Ich habe einen Timer und einen Thread. Wobei im Timer-Event und in der Threadroutine eine identische Methode aufgerufen wird(private void bearbeitung(...)). Jetzt ist die Frage ob sie sich (Timer und Thread) behinderten würden oder ob sich das Timer-Event sdurchsetzt, wobei sich der Thread intern gestoppt wird.

Danke

13.11.2005 - 18:58 Uhr

Danke herbivore für die Tips.

13.11.2005 - 18:37 Uhr

Pentium4 1.6GHz.

Vielleicht ist es nützlich noch zu erwähnen, dass dabei noch 2 Synchronthread's, 1 Asynchronthread (also der Thread sigZeihnung()) und dazugehöriger GUI-Thread am Laufen sind.

13.11.2005 - 17:39 Uhr

Hi,

ich wollte mal fragen, ob ihr mir keine Ideen oder Stichpunkte zu diesem Problem schenken würdet?

Danke

12.11.2005 - 16:29 Uhr

Hallo,

nach svenson's vorschäge habe ich endlich hingekriegt, dass ich die Zeichnung ohne Probleme vornehmen kann. Ich habe in die obige Threadroutine einen Delegaten eingefügt und führe in seiner Funktion die Zeichnung durch.
Aber was mich noch stört ist der kurzeitiger Anzeigezustand des Formulars beim Aufrufen. Unzwar ist es so, dass die Steuelemente in der GUI-Thread (wie Bitmap,Picturebox) ein Loch im Formular verurschen, das 1-2Sekunden dauert. Das Grafikfenster wird viel früher erzeugt (auch die erwähnten Steuelemente) Trotzdessen tritt dieses Problem kurzzeitig beim ersten Anzeigebefehl (this.Show())auf. Momentan ist es auch so, dass keine zusätzlichen Zeichenoperationen dazu gekommen sind.
Ich weiss nicht mit was das zutun hat und habe keine Ahnung wie ich das anpacken soll. Wie kann man den Anzeigevorgang der Steuelemente beschleunigen?
Danke für die Vorschläge oder auch für die Stichpunkte.

11.11.2005 - 13:06 Uhr

Danke svenson,

für die Stickworte.

11.11.2005 - 12:27 Uhr

Hi,

ich habe eine ungewöhnliche Fehlermeldung und weißt nicht warum sie auftritt.
Ich möchte in einer Threadroutine eine Zeichnung vornehmen und diese dann anzeigen.

private Bitmap sigBitmap_1 = new Bitmap(5000,5000,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
public void sigZeichnung()
{
      while(this.projektspeicher.startSigApp)
     {
            lock(this)
           {
                   // diese nächste Zeile verursacht den Fehler
                   this.sigBitmap_1.SetPixel(y,(System.Int16)this.sigDaten[0][y],System.Drawing.Color.Blue);
	   this.pictureBoxSigBitmap_1.Image = this.sigBitmap_1;		   this.pictureBoxSigBitmap_1.Refresh();
            }

Ich muss noch sagen, dass die Routine bis zu den Zeichenoperationen funktioniert hat.

Die Fehlermeldung: Das Objekt wird auch irgendwo anders benutzt.
--> Es wird aber nicht!!!

Danke

09.11.2005 - 11:34 Uhr

kann man von dieser Panel auch den Anzeigebereich bestimmen wie bei einer picturebox?

welches verhalten hat dann die scrollbar?

was meinst du damit?

09.11.2005 - 11:13 Uhr

Hi Praktikant,

danke für deine Anregungen. Ich habe mich dafür entschieden die Werte bevor ich sie zeichne zu faktorisieren und anschließend im Offline-Modus(wenn die Zeichnung gestoppt wird) den Bereich, den man besonders betrachten möchte, auf eine Bitmap mit tatsächlichen Werten neu zeichnet.
Aber ich habe noch über den Bildlauf eine Frage. Ist es möglich an eine PictureBox zwei Bitmaps hintereinander dranzuhängen d.h. wenn die erste Bitmap nach links fertig gescrollt wurde, das anschließend die zweite Bitmap zur Sicht kommt? Oder den Anfang der Bitmap mit dem Ende in der Picturebox verbindet, dass sozusagen eine Art Ringbitmap in der Picturebox entsteht?

Danke

08.11.2005 - 20:09 Uhr

Zuerst mal danke für die Antworten.
Aber das Problem liegt daran, dass pro Messung auch der Wertebereich sich ändern kann(was man zum Glück vor der Messung den kennt). Das mit 5000 war nur ein Beispiel.
Es könnte also auch einen Wertebereich von 15000 vorliegen oder der Wertebereich von 5000 könnte auch float-Werte(mit 3-Stellen hinterm Komma) beinhalten. Dann ist man sehr schnell im Millionenbereich an Pixelanzahl.
Wie gesagt, dass ist vorerst nur eine Überlegung von mir wie ich das anpacken möchte. Ob es möglich ist kann ich nicht abschätzen. Deswegen wäre ich dankbar wenn ihr eure Lösungsvorschläge mitteilen würdet.

Danke

08.11.2005 - 14:52 Uhr

Hallo,

hat keine Vorschläge oder Ideen dazu.

08.11.2005 - 13:20 Uhr

Hi C#'ler,

endlich ist das Ende meiner Diplomarbeit in Sicht und kann auf einen erfolgreichen Abschluss hoffen. Zur Zeit bin ich dort angelegt was eigentlich Sinn und Zweck der Arbeit ist d.h. grafische Darstellung der Daten die ich von einem Microcontroller ausgelesen habe.
Ich muss jetzt diese Daten auf eine Bitmap diskret einzeichnen. Objekte für Zeichenoperationen und sämtliche Fuktionen sind auch bekannt.

Ich bin momentan in der Meinung alle Daten, die ich in einem Puffer abgelegt habe, auch einzeichne d.h. jede Änderung des vertikal-Wertes bezogen auf den horizontal-Wert soll ersichtlich sein. Zum Beispeil wenn ich 1000 Wertepaare im Puffer habe will ich auch diese zeichnen und die x-Achse beim Erreichen des x-Clientbereiches nach links scrollen lassen. Aber die y-Achse bereitet mir bei dieser Überlegung ein Nachdenken. Nehmen wir an, ich habe einen Wertebereich von 0 bis 5000 (wobei sich dieser Wert nur ganzzahlig ändern kann) muss ich min. ein Pixel pro Wert haben (sogar bischen mehr) um die Änderung anzuzeigen, was bei größeren Wertebereichen nicht mehr möglich ist, alles auf eine Bitmap darzustellen. Gibt irgendwelche Möglichkeiten mehrere Bitmaps als eine Einheit aneinander zu legen damit ich auch auf die nächste Bitmap wenn ihre Größe nicht mehr ausreichen sollte? Natürlich werden diese Bitmaps später dann factorisiert (verkleinert) und in einem Pictubox angezeigt. Für detailiierte Betrachtungen im Offline-Modus sollen diese gezoomt werden können.

Am Anfang meiner Diplomarbeit hatte ich dieses Thema in diesem Forum auch angesprochen, wobei ich nach grobe Infos gebeten hatte. Aufgrund der Details habe ich ein neues Theme erstellt.

Ich würde mich freuen wenn ihr eure Meinungen zu meiner voraussichtlichen Vorgehensweise mitteilen würdet. Ob es so realisierbar ist oder nicht? Oder wie ihr vorgehen würdet?

Danke Amozi

28.10.2005 - 11:18 Uhr

svenson,

Danke für den Tipp. Klappt wie ich es haben möchte.

28.10.2005 - 11:00 Uhr

Wie, das verstehe ich jetzt nicht. Ich erzeuge ja mit "new ArrayList[100]" die Felder der ArrayList.

28.10.2005 - 10:54 Uhr

Hallo Leute,

ich bin momentan am verzweifeln, weil ich von einer ArrayList keinen Array anlegen kann. Nach MSDN ist dies möglich bzw. steht nichts warum es nicht klappen sollte.
Auch meine Implementierungen bringen beim Compalieren keine Fehler. Aber zur Laufzeit wird gesagt, dass das Objekt nicht auf eine Objektinstanz festgelegt wurde. Ich bin seit 3h dabei und kann das Problem nicht lösen. Bei Unterstützungen würde ich mich freuen.

Hier der Code:

private ArrayList[] daten;
// irgendwas
this.daten = new ArrayList[100];
this.daten[3].Add("hallo");

Und noch was anderes: Wie kann man dann die Elemente abfragen(this.daten[3][0] ??).

Danke

25.10.2005 - 11:24 Uhr

problem gelöst trotzdem Danke.

25.10.2005 - 10:56 Uhr

Hallo zusammen,

unzwar will ich gleich zur Sache kommen und mein Problem anhand des Codes kurz erläutern. Ich habe eine ArrayList wobei ich sie mit einen struct-Datentyp fühle.

public ArrayList recMsgBuffCcpSig;
//
public void syncRecThreadData()
{ //
recCanMsg  msg = new recCanMsg();
this.recMsgBuffCcpSig.Insert((int)(msg.data[0]),msg);
}

public struct recCanMsg
{
//
}

Soweit so gut. Aber beim Auslesen des Objekts tritt zur Laufzeit die Fehlermeldung
"Eine nicht behandelte Ausnahme des Typs 'System.InvalidCastException' ist ..
Zusätzliche Info: Die angegebene Umwandlung ist ungültig". Der Code dazu:

public bool ReceiveCanMessageCcpSig(int pid, out recCanMsg msg){
msg = (recCanMsg)this.recMsgBuffCcpSig[pid];
}

Ja ich weiß, für viele von euch ist es ein einfacher Fehler, was gleich behoben werden könnte. Aber ich bin leider nicht so fit in C#-Programmierung.
Würde mich freuen wenn ihr mal kurz drüber schauen würdet.

Danke

17.10.2005 - 10:09 Uhr

Hallo gentry205,

zuerst danke für deinen Beitrag. Aber auch wenn ich die entsprechende Zeile

//this.recMsgBuffCcpSig.RemoveAt(msg.data[0]);

auskommendiere, kommt eine Fehlermeldung, die ich als zweite geschrieben habe.
Aber dein Betrag bringt mich zu einer anderen Idee. Muss der Arraylist bis zu dem angegebenen Index gefüllt sein, oder spielt es keine Rolle, weil erst nach kurzer Zeit des Sprungs vom Index0 auf Index255 die Fehlermeldung auftritt.

17.10.2005 - 09:38 Uhr

Gutenmorgen zusammen,

für mich gilt das anscheinend nicht, weil ich ein Problem mit ArrayList habe und nicht lösen kann. Hier der Code:

private ArrayList recMsgBuffCcpSig;
this.recMsgBuffCcpSig = new ArrayList(1000000);
// irgendwas
Console.WriteLine((int)msg.data[0]); // -->0-255
Console.WriteLine(this.recMsgBuffCcpSig.Capacity) // -->1000000
this.recMsgBuffCcpSig.RemoveAt(msg.data[0]);
this.recMsgBuffCcpSig.Insert(msg.data[0],msg);

Wobei hier msg einen "struct"-Datentyp darstellt. Erst zur Laufzeit tretten bei den Commands RemoveAt und Insert jeweils ein Fehler auf.
Fehlermeldung: "Der Index liegt außerhalb des gültigen Bereichs. Der Index darf keine negative Zahl und muss kleiner als die Auflistungsgröße sein."
und
"Der Einfügeindex liegt außerhalb des gültigen Bereichs. Der Index darf keine negative Zahl sein.".

Obwohl der Index zwischen 0 und 255 werden diese Fehlermeldungen ausgegeben.
Ich komm nicht mehr weiter. Ich würde mich freuen wenn ihr Hinweise geben könntet.
Dankeschön

13.10.2005 - 10:42 Uhr

Hallo Dexter,

Convert.ToByte(); macht es möglich

12.10.2005 - 10:07 Uhr

Danke herbivore

12.10.2005 - 09:56 Uhr

D.h. ich habe in 1.1 überhaupt keine Möglichkeit den struct in einem dynamischen Array reinzupacken. Verstehe ich das richtig?

12.10.2005 - 09:37 Uhr

kann mir jemand verraten unter welchem namespace List zu finden ist(im System.Collections ist sie nicht)
Ausserdem bekomme ich auch für die Syntax laute Fehlermeldungen.

List<mystruct> = new List<mystruct>();
11.10.2005 - 12:00 Uhr

Ja, wie soll ich es dann hinkriegen wenn im struct verschiedene Datentypen wie z.B. uint, byte, sbyte usw. vorhanden sind. Da scheidet die Vorgehensweise mit List aus, oder?

11.10.2005 - 11:24 Uhr

Hallo,

ich wollte erfahren, ob man in C# einen struct-Datentyp als einen dynamischen Array deklarieren kann. Damit meine ich die Funktionalität von einer ArrayList, wobei man die Größe des Arrays beliebig erweitern kann.

Danke

06.10.2005 - 19:16 Uhr

Herbivore,

ich habe bißschen voreilig gehandelt. Hier die Lösung.

float t= float(2502,444);
String bla= System.BitConverter.ToString(System.BitConverter.GetBytes(t)));

Was mich noch stört, die Hexzahlen stehen umgekehrt drin. Anstatt 45 1c 67 1a steht "1a-67-1c-45". Kann man das umkehren.

06.10.2005 - 18:13 Uhr

Hallo Leute,

es könnte sein das ich angefangen habe einige zu nerven, aber ich muss wiedemal was nachfragen.
Mit Unterstützung von Svenson habe ich heute die Konventierung von Hex zu float hinbekommen.
Kann jemand von euch verraten, wie die Konventierung von float zu Hex zu realisieren ist. Zum Beispiel muss für die float-Zahl 2502,444 ein Hexwert von
45 1c 67 1a rauskommen.
In der Doku habe ich nicht mal Annäherendes darüber gefunden. Danke für die Unterstützung.

amozi

06.10.2005 - 15:16 Uhr

Vielen Dank Svenson,

es klappt hervorragend. 🙂

06.10.2005 - 14:48 Uhr

http://en.wikipedia.org/wiki/IEEE_floating-point_standard

Auf dieser Seite wird auch die Vorgehensweise gut erläutert.

06.10.2005 - 14:39 Uhr

Okey, hier sind die Lösungsschritte:

1.) Ins Binärsystem umwandeln

45 9c 40 00 = 0 10001011 00111000100000000000000
(VZ) (Exp) (Mantisse)

wenn Vorzeichen=0 --> positiver Wert
e=Exp-127= 12
Zahlenwert = 1,00111000100000000000000 * 2^12
= 1001110001000,00000000000
= 5000,00000000000

Dieser Wert wird auch zum PC gesendet.

06.10.2005 - 14:20 Uhr

Habe eben ausprobiert. Leider klappt diese Variante auch nicht.

06.10.2005 - 14:07 Uhr

Nee, die Formatspezifikationen sind identisch. Bei per Handrechnung verwende ich ja auch das Intel-Format.
Ausserdem habe ich deinen Vorschlag auch ausprobiert. Danke aber für den Hinweis. Ich würde auf andere Hinweise sehr dankbar sein.

06.10.2005 - 13:59 Uhr

Also dieser Wert schicke über Can an dem PC, indem Format wie die Spezifikation(IEEE 754) vorschreibt. Ausserdem habe ich das auch ausrechnet. Soll ich die Rechenschritte zeigen?

06.10.2005 - 13:03 Uhr

Hallo,

vor einigen Wochen hatte ich nach einer Funktion gefragt, die Hexzahlen zu "float" konvertieren sollte. Mir wurde der Hinweis zur Single.Parse gegeben.
Seit heute möchte auch diese Funktion einsetzen. Aber leider kommt ein falsches Ergebnis raus.

Console.WriteLine(Single.Parse("459C4000",NumberStyles.HexNumber);

Der obiger Code liefert den Wert: 4,6094e+7
Was aber falsch ist. Das Ergebnis muss 5000,0... lauten. Auf diese Berechnung komme ich wenn ich die IEEE 754-Norm einsetze (was auch stimmt!!). C#-Sharp benutzt wiederum diese Norm. Was mach ich da falsch?

Kann mir jemand behilflich sein. DANKE