Optimierung im Release-Build für einzelne Funktionen ausschalten / Thread-Problem
-
Ich blick's nicht. Folgender Code tut einwandfrei:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using PPT = Microsoft.Office.Interop.PowerPoint; namespace PowerPointDoc { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void buttonCreatePptDoc_Click(object sender, EventArgs e) { PPT.ApplicationClass powerPointApplication = new Microsoft.Office.Interop.PowerPoint.ApplicationClass(); powerPointApplication.Visible = Microsoft.Office.Core.MsoTriState.msoTrue; PPT.Presentations presentations = powerPointApplication.Presentations; PPT.Presentation presentation = presentations.Add(Microsoft.Office.Core.MsoTriState.msoTrue); PPT.Slides slides = presentation.Slides; PPT.Slide slide = slides.Add(1, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutBlank); PPT.Shape textShape = slide.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 50, 50, 450, 120); PPT.TextRange textRange = textShape.TextFrame.TextRange; textRange.Text = "Mein Name sei Gantenbein"; textRange.Font.Name = "Arial"; textRange.Font.Size = 28; for (int i = 0; i < 100; i++) { PPT._Slide newSlide = InitSlide("Test" + i.ToString(), presentation); if (newSlide.Shapes[1].TextFrame.TextRange.Font.Size != 10) System.Diagnostics.Debug.Print("Error"); } } protected virtual PPT._Slide InitSlide(string slideTitle, PPT._Presentation presentation) { PPT._Slide slide; slide = presentation.Slides.Add(presentation.Slides.Count + 1, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly); PPT.TextRange textRange = slide.Shapes[1].TextFrame.TextRange; textRange.Text = slideTitle; textRange.Font.Name = "Arial"; textRange.Font.Size = 10; //Thread.Sleep(100); //while (textRange.Font.Size != 24) //{ // Thread.Sleep(100); // textRange.Font.Size = 24; //} return slide; } } }
Es wird kein "Error" protokolliert.
-
Tja. Ich verstehe es auch nicht.
-
dEUs, willst du dann nicht sicherheitshalber noch eine Zeitbegrenzung einbauen, damit das Ding nicht in eine Endlosschleife fährt? Ich weiß, es ist äußerst unwahrscheinlich, aber trotzdem evtl möglich, dass die Schriftart mal überhaupt nicht auf 24 gesetzt werden kann, mir jedenfalls wäre das glaubich zu riskant.
-
Wäre es ein Programm das oft und von Endbenutzern ausgeführt wird, würde ich das natürlich machen. Weder das eine noch das andere ist aber hier der Fall.
-
dEUs schrieb:
Tja. Ich verstehe es auch nicht.
Ich meinte, auch mit Deinem Beispiel konnte ich das von Dir genannte Verhalten nicht nachvollziehen.
Ich habe die Anwendung 500 Mal ausgeführt und jedes Mal wurden 100 neue Slides erstellt. Kein einziges Mal kam es zum gemeldeten Fehlverhalten. Deshalb neige ich dazu, das Verhalten im Ausführungs-Kontext zu suchen. Läuft denn das Ganze über ein Netzwerk, oder gar in einem Internet-Szenario?
-
Weder noch. Möglicherweise liegt es an der Länge des Textes.
Ich versuche das mal herauszufinden.
-
Es scheint am Zeilenumbruch zu liegen.
Mit dieser Zeile ist das Problem auch in deiner Test-Anwendung reproduzierbar:PPT._Slide newSlide = InitSlide("Test"+Environment.NewLine+"Test", presentation);
Toll, nicht?
-
dEUs schrieb:
Es scheint am Zeilenumbruch zu liegen.
Mit dieser Zeile ist das Problem auch in deiner Test-Anwendung reproduzierbar:PPT._Slide newSlide = InitSlide("Test"+Environment.NewLine+"Test", presentation);
Toll, nicht?
Der Zeilenumbruch bringt bei mir keine Änderung des Testergebnisses. Alles läuft so, wie es soll.
Testsystem:
XP Pro SP2
MS Office PowerPoint 2003 (11.8169.8172) SP3
Microsoft.Office.Interop.PowerPoint 11.0.0.0
-
Der einzige Unterschied den ich jetzt noch sehe ist die Office-Version.
Ich verwende die Release-Version ohne SPs: 11.5529.5606
-
dEUs schrieb:
Der einzige Unterschied den ich jetzt noch sehe ist die Office-Version.
Ich verwende die Release-Version ohne SPs: 11.5529.5606Seit der Originalversion wurden verschiedene Fehler verbessert. Einiges geht in die Richtung des von dir beschriebenen Fehlverhaltens:
http://support.microsoft.com/kb/885260/
Text verschwindet möglicherweise aus Slide Titles bei Verwendung benutzerdefinierter TrueType-Schriftarten in PowerPoint 2003http://support.microsoft.com/kb/897243/en-us
When you open a presentation in PowerPoint 2003, some of the characters in a line of text may disappear. Or, some of the characters may appear to be overlapped by other characters. Additionally, text in a text box may wrap
more tightly than expected. This causes the characters in the text to be crowded together. This issue occurs because PowerPoint 2003 does not enumerate the fonts that are available on the computer until it is absolutely necessary. PowerPoint 2003 assumes that the fonts that are used in a presentation use standard widths and standard heights. If a font uses non-standard widths and non-standard heights, some of the characters in the font will be truncated, will disappear, or will wrap more tightly than expected.Wenn es Word wäre, könnte ich das Ganze ja noch verstehen, weil mit den Absatzmarken in Word auch Formatierungen mitgespeichert werden, abers so...
-
Naja... Wie du siehst verwende ich Arial. Noch mehr Standard-Schriftart geht ja garnicht...