AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein .NET-Framework (managed code) C# Programm läuft nicht ohne Visual Studio
Thema durchsuchen
Ansicht
Themen-Optionen

Programm läuft nicht ohne Visual Studio

Ein Thema von jfheins · begonnen am 13. Dez 2010 · letzter Beitrag vom 13. Dez 2010
Antwort Antwort
Benutzerbild von jfheins
jfheins

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

AW: Programm läuft nicht ohne Visual Studio

  Alt 13. Dez 2010, 19:38
Ja, die eine Idee hatte ich auch schon, siehe 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
---------------------------
Zielframework ist auf .net 2.0 - ich guck mal ob sich da was tut wenn ich das ändere, mom.

Der Rest ... ich schau mal ob ich das hinbekomme

Geändert von jfheins (13. Dez 2010 um 19:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

AW: Programm läuft nicht ohne Visual Studio

  Alt 13. Dez 2010, 19:53
Na toll, wenn ich das Ziel auf .net 4 Client Profile ändere (welches auf dem Testlaptop neben mir auch installiert ist) dann kommt "Programm xyz hat ein Problem festgestellt und muss beendet werden"

Mit dem 3.5 Framework kommt wieder die Schutzverletzung.

Geändert von jfheins (13. Dez 2010 um 19:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#3

AW: Programm läuft nicht ohne Visual Studio

  Alt 13. Dez 2010, 20:01
Ach, hervorragend. 2.0. Der Klassiker

Du hast bei Dir amit VS2010 .NET 3.5 SP1 drauf, was auch .NET 2.0 SP1 installiert. Auf den XP-Maschinen wahrscheinlich nur .NET 2.0 ohne SP1. Auf der Vista-Kiste wahrscheinlich auch. Will heissen das SP fehlt dort mit an Sicherheit grenzender Wahrscheinlichkeit.

Da das ganze Bitmap-Gelade in GDI+ passiert, und das Native ist, hast Du hier unter der Haube mit einer Menge von P/Invoke zu tun. Und die P/Invoke aufrufe sind auf Deiner Maschine mit SP1 leicht anders als die ohne SP, da sich genau an der Stelle im SP was geändert hat.

Dewegen verschwurbeln sich da wohl ein paar Bytegrenzen, und der Fehler wird ausgelöst. Das Problem ist auch andersrum da: Packst Du das .NET SDK auf eine der anderen Maschinen und kompilierst das Programm dort, läuft es dort, aber nicht bei Dir.

Hintergrundinfos mit weiterführenden Links gibts hier: http://www.danielmoth.com/Blog/net-framework-35.aspx
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#4

AW: Programm läuft nicht ohne Visual Studio

  Alt 13. Dez 2010, 20:16
Ah, hab ihn

Es ist unter Garantie das Marshal.Copy. Je nach SP Version hat das ausgelesene Bitmap voraussichtlich ne andere Größe die nicht unbedingt der Breite*Höhe entspricht. Im übrigens sollten die Farbwerte ein Byte[] sein und kein int[] - schliesslich kann sich int je nach Plattform ändern.

Probier mal folgende Hotfixes aus, oder sorge eben dafür dass überall die gleichen SP's da sind:
http://support.microsoft.com/kb/923028
http://support.microsoft.com/kb/971030
(Auch wenn die Fehlerbeschreibung nicht unbedingt passt - das ist alles die gleiche Thematik).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

AW: Programm läuft nicht ohne Visual Studio

  Alt 13. Dez 2010, 20:25
Hallo Sebastian,
danke schonmal für die ausgiebige Hilfe.

Ja, dass es das Copy ist habe ich auch gerade rausgefunden (dank deinem Tipp, das mit dem Trace muss ich mir merken )

Zitat:
Test output Bild laden
Bild Format ändern
Bilddaten sperren
Stride: 17472
Width: 4368
Bildwerte ins Array kopieren
Zeug berechnen
Bilddaten entsperren
Malen
Anzeigen
finally
vs
Zitat:
Test output Bild laden
Bild Format ändern
Bilddaten sperren
Stride: 13104
Width: 4368
Bildwerte ins Array kopieren
finally
System.AccessViolationException: 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.
bei System.Runtime.InteropServices.Marshal.CopyToManag ed(IntPtr source, Object destination, Int32 startIndex, Int32 length)
bei System.Runtime.InteropServices.Marshal.Copy(IntPtr source, Int32[] destination, Int32 startIndex, Int32 length)
bei SA_Auswertung.Form1.files_lv_MouseClick(Object sender, MouseEventArgs e)
Daraus schließe ich, die PC mit Fehler nehmen meine "Aufforderung" nach 32 bit pro Pixel nicht richtig Ernst ...
Code:
                Bitmap bmp = img.Clone(rect, PixelFormat.Format32bppArgb);
Das mit den integers hat Performance-Gründe. Das verarbeiten ging so schneller als mit den Bytes.

Grüße,
Julius

------------------------------------------
Edit:

Problem gelöst. Neuer Code:
Code:
Bitmap bmp = new Bitmap(img.Width, img.Height, PixelFormat.Format32bppArgb);
                        using (Graphics g = Graphics.FromImage(bmp))
                        {
                            g.DrawImage(img, new Rectangle(Point.Empty, img.Size));
                        }
Fragt mich nicht warum, aber anscheinend ist .Clone() nicht verlässlich, wenn man das Pixelformat ändern möchte.

Geändert von jfheins (13. Dez 2010 um 21:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz