Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

Programm läuft nicht ohne Visual Studio

  Alt 13. Dez 2010, 18:51
Hallo,
ich habe ein ganz tolles Programm geschrieben. Auf meinem Entwicklungsrechner läuft das auch sehr schön. Nur leider fast überall anders nicht.
Ich habe es auf 2 Rechnern getestet, die mit WinXP liefen, ohne VS. Geht nicht. Auf einem Win7 Rechner mit VS - lief. in meiner VM mit Vista und .net 4 aber ohne VS läuft es wieder nicht.
Ich könnte natürlich zu den Systemvorraussetzungen ein "Visual Studio 2010 oder höher" schreiben, aber das will ich nicht

Zum Code: (denn ich weis, wie gerne ihr ein "läuft nicht" hört)

Code:
        private void files_lv_MouseClick(object sender, MouseEventArgs e)
        {
            const int centerradius = 15;
            var centerpen = new Pen(Color.Red, 5);
            var axis = new Pen(Color.Green, 4);
            var thickness = new Pen(Color.Red, 4);
            var roughlevel = new Pen(Color.Blue, 2) { DashStyle = System.Drawing.Drawing2D.DashStyle.Dash };


            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                var lvitem = files_lv.GetItemAt(e.X, e.Y);
                if (lvitem != null)
                {
                    try
                    {
                        // Bild laden, und in 32 bit Bitmap konvertieren
                        var img = new Bitmap(Files[lvitem.Index].File.FullName);
                        var rect = new Rectangle(0, 0, img.Width, img.Height);
                        Bitmap bmp = img.Clone(rect, PixelFormat.Format32bppArgb);

                        // Bilddaten werden gesperrt
                        BitmapData bmpData = bmp.LockBits(
                                rect,
                                System.Drawing.Imaging.ImageLockMode.ReadWrite,
                                bmp.PixelFormat
                            );

                        try
                        {
                            // Array für die Farbwerte
                            int size = bmp.Width * bmp.Height;
                            int[] rgbArray = new int[size];

                            // Die Farbwerte in ein Array kopieren
                            System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, rgbArray, 0, size);

                            var calcitem = new CalcInfo { rgbValues = rgbArray, color = colorDialog1.Color.ToArgb(), Width = bmp.Width, Height = bmp.Height };

                            // Hier sind dann win paar Berechnungen

                            bmp.UnlockBits(bmpData);

                            using (var g = Graphics.FromImage(bmp))
                            {
                                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

                                // auf g malen
                            }
                            pictureBox.Image = bmp;
                            pictureBox.BringToFront();
                            pictureBox.Show();
                        }
                        finally
                        {
                            // Sperre aufheben
                            bmpData = null;
                            img.Dispose();
                        }
                    }
                    catch (DivideByZeroException)
                    {
                        MessageBox.Show(this, "Das Bild enthält keine farbigen Pixel.", "Bild kann nicht geöffnet werden", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    catch (SystemException)
                    {
                        MessageBox.Show(this, "Das Bild hat ein unbekanntes Format und kann deshalb nicht geöffnet werden.", "Bild kann nicht geöffnet werden", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(this, "Das Bild kann aus einem unbekannten Grund nicht verarbeitet werden.\n" + ex.ToString(), "Bild kann nicht geöffnet werden", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
Bzw. hier mit Syntax Highlighting: http://clipboard.to/18c24

Die Fehlermeldung:
Zitat:
---------------------------
Bild kann nicht geöffnet werden
---------------------------
Das Bild hat ein unbekanntes Format und kann deshalb nicht geöffnet werden.

Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
---------------------------
OK
---------------------------
Was ist bei PC's mit VS anders als bei solchen, wo nur das Frameworkt drauf ist?

Das Bild, das geladen wird ist ein PNG (bzw. mit vielen PNG's getestet, auf meinem gehen alle auf den anderen geht keines)
Doof ist eben, dass ich nicht einfach VS installieren kann um zu debuggen ... :-/

Wisst ihr Rat?
  Mit Zitat antworten Zitat