Nachrichten

25. Dezember 2025

FastReport 2025 Rückblick

Der Jahresrückblick 2025 von FastReport: neue Funktionen, Produktverbesserungen, Performance-Optimierungen und Weiterentwicklung von Desktop-, Cloud- und Server-Lösungen.
7. April 2025

Aktualisierte Version von FastCube .NET 2025.2

In diesem Update haben wir uns darauf konzentriert, die Berechnungen zu beschleunigen, die Kompatibilität mit .NET 9 zu verbessern und die Änderungen verständlicher zu machen.     Umstellung auf invariante Mathematik. Bis zu 2 Mal schneller! Eine der wichtigsten Verbesserungen ist der Verzicht auf den Typ „Variante“ zugunsten der invarianten Mathematik. Diese Änderung führt zu einer erheblichen Beschleunigung der Erstellung und Neuberechnung von Würfeln, in einigen Fällen um mehr als das Doppelte schneller! Außerdem funktioniert der Würfel jetzt in verschiedenen Lokalisierungen korrekt, auch in nicht standardisierten Lokalisierungen (außer Latein), was seine Verwendung für internationale Benutzer erweitert.     Produktweise Verteilung von Änderungen FastCube .NET Updates sind nun produktweise (WinForms, Web, Mono und das gesamte FastCube .NET) verteilt. Dadurch wird der Update-Prozess transparenter. Sie sehen sofort, welche Änderungen die von Ihnen benötigte Version betreffen.     Behobener Fehler beim Lesen eines Streams aus einer komprimierten Datei  Zuvor wurden komprimierte Dateien in einigen Fällen nicht korrekt verarbeitet, was dazu führen konnte, dass Daten falsch oder gar nicht geladen wurden. Dieser Fehler wurde nun behoben und der Umgang mit komprimierten Dateien erfolgt vollständig korrekt. Dadurch erreichten wir: korrektes Lesen von Daten aus Archivdateien. einen stabileren Betrieb beim Herunterladen großer Dateien. Vermeidung von Fehlern im Multithread-Modus, was besonders für Webanwendungen wichtig ist. Wenn Ihr Projekt die Datenkomprimierung aktiv verwendet, empfehlen wir ein Upgrade auf Version 2025.2, um etwaige Probleme zu vermeiden.     Die Dateisignatur für den Würfel ist jetzt unveränderlich (const statt static) Zuvor wurde die Dateisignatur als static deklariert, wodurch sie während der Programmausführung geändert werden konnte. In einigen Fällen kann dies zu Fehlern im Zusammenhang mit Datenstrukturänderungen oder sogar Dateibeschädigungen führen. Änderungen in der neuen Version: Die Signatur wird jetzt als  const bekanntgegeben, wodurch sie auf der Code-Ebene unveränderlich bleibt. Die Integrität der Dateistruktur ist unabhängig von Änderungen im Programmcode gewährleistet. Der Umgang mit Cube-Dateien ist in verschiedenen Umgebungen, einschließlich Web und Mono stabiler geworden. Dies ist besonders wichtig für die Entwickler, die in Mehrbenutzer- und verteilten Systemen arbeiten.     Kompatibilität mit .NET 9   Eine der wichtigsten Verbesserungen ist die Hinzufügung der .NET 9-Unterstützung. FastCube .NET ist jetzt vollständig mit der neuesten Version der Plattform kompatibel, so dass Sie die Vorteile der neuen Funktionen und Erweiterungen von Microsoft nutzen können. Dies ist ein wichtiges Update für die Entwickler, die auf .NET 9 umstellen oder planen, es in ihren Projekten zu verwenden.  Wir möchten gesondert darauf hinweisen, dass die Unterstützung neuer Versionen die Stabilität des Produkts und die Integration mit den neuesten Technologien gewährleistet.     Aktualisierung der unterstützten Versionen von .NET Als Hauptversion gilt nun die .NET 8, die den aktuellen Standard für die meisten Unternehmensprojekte entspricht. Die .NET 6-Unterstützung wurde jedoch beibehalten, da es sich hierbei um eine Langzeitversion mit erweiterter Unterstützung handelt.  Darüber hinaus wurde, wie bereits erwähnt, die .NET 9-Unterstützung hinzugefügt, sodass Sie bei der Auswahl der Plattform für die Arbeit mit FastCube .NET flexibel sind, egal ob Sie Stabilität (in .NET 6) oder die neuesten Funktionen und Leistungsverbesserungen (.NET 9) wünschen.     Korrekturen und Verbesserungen im Demobeispiel  Im Demobeispiel für das boolean Format wurde ein Fehler behoben, durch den die korrekte Anzeige der Daten beeinträchtigt wurde. Dieses Format funktioniert nun korrekt und verursacht keine Fehler, was die Arbeit mit den Demobeispielen für die Benutzer erleichtert. Im Demowürfel "Sales by months" wurden früher die Titel falsch angezeigt. Jetzt wurde dieser Fehler behoben und die Feldnamen werden korrekt angezeigt, was die Genauigkeit und die Benutzerfreundlichkeit beim Umgang mit Daten gewährleistet.     Verbesserte Datenserialisierung  Eine der wichtigsten Verbesserungen ist die Optimierung des Datenserialisierungsprozesses. Es wurden neue Methoden hinzugefügt und Eigenschaften festgelegt, so dass Standardwerte nun seltener serialisiert werden.  Durch die Verringerung der Menge der serialisierten Daten wird das System beim Speichern und Laden von Informationen entlastet. Außerdem erhöhen diese Änderungen die Leistung, was sich besonders bei der Bearbeitung von großen Datenmengen bemerkbar macht.     Lister der Änderungen FastCube .NET WinForms [Common]- Ein Fehler wurde behoben, bei dem der Stream aus einer komprimierten Datei falsch gelesen wurde;* Die Dateisignatur für den Würfel hat jetzt einen konstanten Modifikator (const) anstelle eines statischen (static) und kann nicht geändert werden; FastCube .NET Web [Common]- Ein Fehler wurde behoben, bei dem der Stream aus einer komprimierten Datei falsch gelesen wurde;* Die Dateisignatur für den Würfel hat jetzt einen konstanten Modifikator (const) anstelle eines statischen (static) und kann nicht geändert werden; FastCube .NET Mono [Common]- Ein Fehler wurde behoben, bei dem der Stream aus einer komprimierten Datei falsch gelesen wurde;* Die Dateisignatur für den Würfel hat jetzt einen konstanten Modifikator (const) anstelle eines statischen (static) und kann nicht geändert werden; FastCube .NET [Common]+ Die Kompatibilität mit .NET 9 wurde hinzugefügt;+ .NET-Versionen wurden aktualisiert, wobei die Hauptversion jetzt .NET 8 ist und Zielplattformen wie .NET 6, .NET 8 und .NET 9 unterstützt werden;* Einige Eigenschaften wurden im WinForms-Editor vor dem Benutzer verborgen;* Der Typ „Variante“ wurde durch Variantenmathematik ersetzt;* Die Serialisierung wurde verbessert, Methoden wurden hinzugefügt und Eigenschaften wurden so eingestellt, dass Standardwerte seltener serialisiert werden;- Die Anzeige des Feldnamens wurde im Demowürfel "Sales by months" korrigiert;- Ein Fehler wurde im Demobeispiel für Boolesches Format behoben.     Weitere kritische Änderungen  Allgemeine Änderungen für FastCube Web, FastCube WinForms und FastCube Mono Lagecy-Delegate wurden durch kompatible ersetzt, da der Variant entfernt wurde und nun stattdessen Boxing durch Object verwendet wird: Klicken Sie hier, um zu erweitern   FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, FastReport.Olap.Utils.Variant, System.Int32) FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, System.Int32) FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], FastReport.Olap.Utils.Variant[], System.Int32)   Veraltete Felder. Die folgenden Felder wurden durch die entsprechenden Eigenschaften ersetzt Klicken Sie hier, um zu erweitern   FastReport.Olap.Types.BoolValue -> public System.Boolean Value FastReport.Olap.Types.ByteValue -> public System.Byte Value FastReport.Olap.Types.DateTimeValue -> public System.DateTime Value FastReport.Olap.Types.DecimalValue -> public System.Decimal Value FastReport.Olap.Types.DoubleValue -> public System.Double Value FastReport.Olap.Types.FloatValue -> public System.Single Value FastReport.Olap.Types.IntValue -> public System.Int32 Value FastReport.Olap.Types.LongValue -> public System.Int64 Value FastReport.Olap.Types.SByteValue -> public System.SByte Value FastReport.Olap.Types.ShortValue -> public System.Int16 Value FastReport.Olap.Types.StringValue -> public System.String Value FastReport.Olap.Types.TimeSpanValue -> public System.TimeSpan Value FastReport.Olap.Types.UIntValue -> public System.UInt32 Value FastReport.Olap.Types.ULongValue -> public System.UInt64 Value FastReport.Olap.Types.UShortValue -> public System.UInt16 Value FastReport.Olap.Slice.MeasureCell -> public FastReport.Olap.Utils.Variant Value   Veraltete Methoden wurden durch kompatible Methoden ersetzt, aber anstelle des Typs Variant wird nun Data Boxing durch Object verwendet, wodurch Sie nicht Werte mit Speicherkopien, sondern einen Link auf ein Objekt übergeben können. Klicken Sie hier, um zu erweitern   FastReport.Olap.Types.BoolDTP -> public FastReport.Olap.Types.BoolValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ByteDTP -> public FastReport.Olap.Types.ByteValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public T VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DateTimeDTP -> public FastReport.Olap.Types.DateTimeValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DecimalDTP -> public FastReport.Olap.Types.DecimalValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DoubleDTP -> public FastReport.Olap.Types.DoubleValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.FloatDTP -> public FastReport.Olap.Types.FloatValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.IntDTP -> public FastReport.Olap.Types.IntValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.LongDTP -> public FastReport.Olap.Types.LongValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.Range -> public System.Boolean Match(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.Ranges -> public System.Boolean Match(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.SByteDTP -> public FastReport.Olap.Types.SByteValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ShortDTP -> public FastReport.Olap.Types.ShortValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.StringDTP -> public FastReport.Olap.Types.StringValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.TimeSpanDTP -> public FastReport.Olap.Types.TimeSpanValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.UIntDTP -> public FastReport.Olap.Types.UIntValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ULongDTP -> public FastReport.Olap.Types.ULongValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.UShortDTP -> public FastReport.Olap.Types.UShortValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Slice.AxisContainer -> public FastReport.Olap.Utils.Variant GetValue(System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, FastReport.Olap.Utils.Variant) FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection) FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32) FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValue(System.Int32) FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValueFromRecord(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, FastReport.Olap.Utils.Variant&) FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(FastReport.Olap.Utils.Variant, System.Boolean) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32) FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, System.Int32) FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, FastReport.Olap.Utils.Variant&) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant&) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32) FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetValue(System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetTotalValueForDims(System.String) FastReport.Olap.Code.Measures -> public FastReport.Olap.Utils.Variant GetDetailValue(System.Int32, System.String)   Veraltete Eigenschaften. Die folgenden Eigenschaften wurden so geändert, dass nun Boxing anstelle des Typs Variant verwendet wird: Klicken Sie hier, um zu erweitern   FastReport.Olap.Types.BoolValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DateTimeValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DecimalValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DoubleValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.FloatValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.IntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.LongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant HighRange { public get; public set; } FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant LowRange { public get; public set; } FastReport.Olap.Types.SByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.StringValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.TimeSpanValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.UIntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ULongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.UShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Slice.CalculateMeasureEventArgs -> FastReport.Olap.Utils.Variant Data { public get; public set; } FastReport.Olap.Slice.CalculateValueEventArgs -> FastReport.Olap.Utils.Variant Value { public get; public set; } FastReport.Olap.Slice.SliceField -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.ContainerFieldItem -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.Dimension -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.Dimensions -> FastReport.Olap.Utils.Variant DetailValue { public get; } FastReport.Olap.Code.Measure -> FastReport.Olap.Utils.Variant CurrentValue { public get; }   Veraltete Typen. Die folgenden Typen sind veraltet und wurden vollständig entfernt, da sie nicht mehr verwendet werden. FastReport.Olap.Utils.Variant FastReport.Olap.Types.IVariantable FastReport.Olap.Types.UnAssigned   Die neuen Delegate ersetzen die alten, die den Typ Variant verwenden. FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, System.Object, System.Object, System.Int32) FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, System.Object, System.Int32) FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], System.Object[], System.Int32)   Das neue Feld hat die bestehenden ersetzt, jetzt wird anstelle des Typs Variant das Boxing durch Object verwendet. FastReport.Olap.Slice.MeasureCell -> public System.Object Value   Die neuen Methoden haben die alten Methoden ersetzt, die den Typ Variant verwendet haben. Jetzt wird stattdessen Boxing verwendet und die Datenübertragung erfolgt per Link statt per Wert, was die Geschwindigkeit deutlich erhöht. Klicken Sie hier, um zu erweitern   FastReport.Olap.Types.Range -> public System.Boolean Match(System.Object) FastReport.Olap.Types.Ranges -> public System.Boolean Match(System.Object) FastReport.Olap.Slice.AxisContainer -> public System.Object GetValue(System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, System.Object) FastReport.Olap.Slice.Slice -> public System.Object CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection) FastReport.Olap.Slice.Slice -> public System.Object GetMeasureValue(System.Int32, System.Int32) FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValue(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValueFromRecord(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, System.Object&) FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(System.Object, System.Boolean) FastReport.Olap.Cube.BaseDataReaderDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.BaseDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByOrder(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByValueId(System.Int32) FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, System.Int32) FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, System.Object&) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, System.Object&) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, System.Object) FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.IBaseDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByOrder(System.Int32) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByValueId(System.Int32) FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetValue(System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetTotalValueForDims(System.String) FastReport.Olap.Code.Measures -> public System.Object GetDetailValue(System.Int32, System.String)   Neue Eigenschaften haben die veralteten Eigenschaften ersetzt bzw. ergänzt: Klicken Sie hier, um zu erweitern   FastReport.Olap.Types.BoolValue -> System.Boolean Value { public get; public set; } FastReport.Olap.Types.ByteValue -> System.Byte Value { public get; public set; } FastReport.Olap.Types.DateTimeValue -> System.DateTime Value { public get; public set; } FastReport.Olap.Types.DecimalValue -> System.Decimal Value { public get; public set; } FastReport.Olap.Types.DoubleValue -> System.Double Value { public get; public set; } FastReport.Olap.Types.FloatValue -> System.Single Value { public get; public set; } FastReport.Olap.Types.IntValue -> System.Int32 Value { public get; public set; } FastReport.Olap.Types.LongValue -> System.Int64 Value { public get; public set; } FastReport.Olap.Types.Range -> System.Object HighRange { public get; public set; } FastReport.Olap.Types.Range -> System.Object LowRange { public get; public set; } FastReport.Olap.Types.SByteValue -> System.SByte Value { public get; public set; } FastReport.Olap.Types.ShortValue -> System.Int16 Value { public get; public set; } FastReport.Olap.Types.StringValue -> System.String Value { public get; public set; } FastReport.Olap.Types.TimeSpanValue -> System.TimeSpan Value { public get; public set; } FastReport.Olap.Types.UIntValue -> System.UInt32 Value { public get; public set; } FastReport.Olap.Types.ULongValue -> System.UInt64 Value { public get; public set; } FastReport.Olap.Types.UShortValue -> System.UInt16 Value { public get; public set; } FastReport.Olap.Slice.CalculateMeasureEventArgs -> System.Object Data { public get; public set; } FastReport.Olap.Slice.CalculateValueEventArgs -> System.Object Value { public get; public set; } FastReport.Olap.Slice.SliceField -> System.Object CurrentValue { public get; } FastReport.Olap.Format.CustomFormat -> System.String DefaultFormatValue { public get; public set; } FastReport.Olap.Code.ContainerFieldItem -> System.Object CurrentValue { public get; } FastReport.Olap.Code.Dimension -> System.Object CurrentValue { public get; } FastReport.Olap.Code.Dimensions -> System.Object DetailValue { public get; } FastReport.Olap.Code.Measure -> System.Object CurrentValue { public get; }   Neue Typen: FastReport.Olap.Utils.VMath hat den Typ Variant ersetzt, jetzt werden die Berechnungen durch invariante Berechnungen unter Verwendung von Boxing und Typkonvertierung durchgeführt. FastReport.Olap.Types.IValueStruct``1<T> ist eine Schnittstelle zur Implementierung eines eigenen Boxing-Typs. FastReport.Olap.Types.SimpleCompareAction ist eine Aufzählung für invariante mathematische Aktionstypen.   Änderungen für FastCube WinForms und FastCube Mono Das veraltete Feld wurde durch ein technisch kompatibles Feld ersetzt. FastReport.Olap.Controls.SizingInfo -> public FastReport.Olap.Utils.Variant Data Neues Feld: FastReport.Olap.Controls.SizingInfo -> public System.Int32 Data  
2. April 2025

Mehr Flexibilität mit der neuen Lizenzoption „Business“

Ab dem 1. April 2025 ist eine Lizenzoption für FastReport .NET und FastReport VCL verfügbar. Die „Business“-Lizenz ist für Entwicklerteams von 5 bis 12 Personen konzipiert und eignet sich perfekt, wenn die „Team“-Lizenz zu klein und die „Site“-Lizenz zu groß ist. Was bietet die neue Lizenzoption noch? Persönlicher Manager Prioritärer Support Build-Server Zugriff auf Wissensdatenbank und Produkt-Webinare Frühzeitiger Zugriff auf Sonderangebote Persönlicher Rabatt und Vorzugskonditionen bei der Abonnementverlängerung Zugriff für bis zu 12 Entwickler an einer geografischen Adresse Verfügbar in 32 Sprachen Dokumentation in zwei Sprachen: Englisch und Deutsch   Wählen Sie die für Sie passende Option Voller Preis
25. März 2025

Freigabe einer Bibliothek zur Ausführung von Skripten in C#

Wir freuen uns, die Veröffentlichung einer plattformübergreifenden Bibliothek zur Ausführung komplexer Skripte in C # namens FastScript .NET bekannt zu geben.  Bibliotheken zum Ausführen komplexer Skripte bieten die Möglichkeit, Code dynamisch zu generieren und auszuführen, was in verschiedenen Szenarien nützlich sein kann, z. B. beim Entwickeln von Plugins, Erstellen von Benutzerskripten usw. Arbeiten in eingeschränkten Umgebungen. FastScript .NET basiert auf dem klassischen "Lexer-Parser-Interpreter" -Modell. Es verwendet keine Kompilierung zum maschinellen Code, sodass es in Umgebungen betrieben werden kann, in denen die Codegenerierung eingeschränkt ist (NativeAOT, iOS, WASM). Seine Leistung ist vergleichbar mit anderen Lösungen, die Interpretation verwenden (z. B. Lua und JavaScript), obwohl es langsamer ist als kompilierter C # -Code. C# als Skriptsprache. FastScript .NET ist vollständig in die .NET-Plattform integriert und ermöglicht die Verwendung aller Bibliotheken, Frameworks und APIs. Eine einheitliche Codebasis in C # für Skripte macht die Pflege von Code in mehreren Sprachen überflüssig. Kompaktheit. Die geringe Größe der Bibliothek (nur 300 KB) macht es bequem, auch in ressourcenbeschränkten Projekten zu verwenden, ohne das System zu überlasten. Seit Version 2025.1.21 ist FastScript .NET Bestandteil der Pakete WinForms, WPF, WEB, Mono und Avalonia. Unsere Bibliothek ist auch Teil von Ultimate.NET lösungen mit allen Quellcodes. Mehr erfahren
18. März 2025

Aktualisieren Sie Ihre Team- oder Site-Lizenz mit 50 % Rabatt!

Wir schenken Nutzern mit abgelaufenem Abonnement 50 % Rabatt auf FastReport .NET- und VCL-Team- und Site-Lizenzen. Bis zum 31. März erhalten Sie Zugriff auf neue Funktionen, einen verbesserten Designer und Support zum halben Preis – auch nach Ablauf Ihrer Karenzzeit! Wir veröffentlichen zweimal jährlich Updates. Ein aktives Abonnement garantiert Ihnen daher Support für die neuesten Umgebungsversionen, Berichte mit ständig verbesserter Funktionalität und Benutzeroberfläche, Zugang zum technischen Support und vieles mehr. Kontaktieren Sie uns, um Ihre veraltete Lizenz durch eine neue zu ersetzen!
12. Februar 2025

Delphi turns thirty!

To celebrate the occasion, we invite you to get the FastReport VCL Ultimate edition with a notable discount of 30%. It's a great opportunity to get a great deal on the most extensive type of reporting tool with a source code, cross-platform tools, and OLAP features! Don't miss your chance on February 13 and 14 to save from $390 and provide your application with: Source code Report designer with dialog forms Client-server components for VCL and Lazarus Report creation for VCL, FMX and Lazarus Converters from Quick Report, Report Builder, Rave Reports Support for exporting templates to other data formats Multidimensional analysis system FastCube for VCL, Lazarus and FMX Flexible and open architecture with support for custom report objects Storing finished documents in cloud storage Google Drive, Next Cloud, OneDrive, Amazon S3, Outlook, Gmail FastScript and FastQueryBuilder included  
19. Dezember 2024

Rückblick auf 2024 und Pläne für 2025

Liebe Freunde, das vergangene Jahr war für uns sehr erlebnisreich und produktiv!     📌 Hauptleistungen Neue Produkte: Wir haben FastReport Avalonia auf den Markt eingeführt - ein Tool für die plattformübergreifende Arbeit an Berichten für Windows, MacOS und Linux. Änderungen in der Produktgestaltung: Wir haben den Produktinhalt so aufgeteilt, dass Sie keine unnötigen Funktionen kaufen müssen.     Was hat sich bei unseren Produkten geändert? Für Delphi und Lazarus: Die Arbeit mit hierarchischen Daten in FastReport für Delphi und Lazarus wurde durch das Hinzufügen der TfrTreeView Komponente verbessert. Die Unterstützung der GeoJSON- und TopoJSON-Formate bietet nun zusätzliche Möglichkeiten für die Arbeit mit Karten. Es wurden digitale Signaturen verbessert, eine unendliche Tabellenbreite hinzugefügt, die Barcode-Fähigkeiten erweitert und die Anzeigegenauigkeit und Kompatibilität der PDF-, HTML5-, SVG-, DOCX- und XLSX-Exportfilter verbessert. In der neuesten Version haben wir die Möglichkeiten der Arbeit mit Berichten in komplexen Szenarien erweitert und ein höheres Maß an Integration mit modernen Entwicklungsumgebungen, einschließlich RAD Studio 12.2, bereitgestellt. Für das nächste Jahr planen wir neue Komponenten, Unterstützung für RFID-Tag EPC in ZPL, neue Transporte, verbesserte Exportfilter und vieles mehr.       Für .NET: Wir haben den veralteten .NET Standard 2.0 - 3.1 und die .NET 5 Kompatibilitätsschicht in unseren Bibliotheken aufgegeben. Die minimal unterstützte .NET Version ist nun .NET 6, und das minimal unterstützte Framework ist .NET Framework 4.6.2. Mit der neuesten Version der FastReport .NET Bibliothek unterstützen FastReport Business Graphics .NET und FastCube .NET nun auch .NET 9. Dafür haben wir die binäre Serialisierung (BinaryFormatter) aufgegeben. In diesem Jahr wurde FastCube .NET, eine Bibliothek für die Arbeit mit OLAP-Würfeln und die operative Analyse von Big Data, neu aufgelegt. FastCube.Core.Web unterstützt inzwischen auch Linux und MacOS. Damit eröffnet sich die Möglichkeit, Webanwendungen mit OLAP-Funktionalität auf jedem Server zu entwickeln. Eine der wichtigsten Änderungen im FastCube .NET 2025.1 Release war die vollständige Entfernung der Abhängigkeit von der System.Drawing.Common Bibliothek im FastCube.Core Modul. Dies wurde getan, um die Kompatibilität der Bibliothek mit verschiedenen Plattformen zu erhöhen und die Leistung zu verbessern. Der FastReport Online Designer  - der visuelle Vorlagendesigner -  hat sich auch geändert. Im Jahr 2024 wurde ein neues „SparkGraphic“-Objekt hinzugefügt, es ist nun möglich, Leitlinien auf der Seite zu erstellen und auch ein neues Komponentenmenü wurde implementiert. Bei der Bearbeitung des Berichtscodes wurde die Intellisense-Funktionalität hinzugefügt, die eine automatische Code-Vervollständigung und Syntax-Hinweise bietet, so dass die Benutzer den Code schneller und genauer direkt in der Web-Oberfläche schreiben können. Für das Jahr 2025 planen wir ein neues Plugin hinzuzufügen, mit dem Sie Kundenberichte von MS Word nach .frx konvertieren werden können. Darüber hinaus wird in Zukunft eine Verbindung zu Google Sheets implementiert werden. FastScript .NET für die Ausführung von Skripten wird in der ersten Jahreshälfte veröffentlicht werden. Die neue Bibliothek wird über eine Kompilierungstechnologie verfügen, die es Ihnen ermöglicht, Zwischencode in Maschinencode für eine bestimmte Plattform zu konvertieren (Native AOT). Wir haben vor, ein komplettes Ökosystem von Produkten für verschiedene Plattformen zu schaffen, daher werden wir im nächsten Jahr auch an ihrer Integration untereinander arbeiten.     Für Service-Lösungen: In FastReport Cloud haben wir das System zur automatischen Ausführung von Aufgaben verbessert, das Drucken über den Browser hinzugefügt, eine Schriftenspeicherung entwickelt und das SDK fertiggestellt. Die Benutzerfreundlichkeit und Geschwindigkeit der API wurde verbessert Es wurden neue API-Methoden für die Arbeit mit der Cloud hinzugefügt, die es Ihnen ermöglichen, vertraute Operationen schneller und bequemer durchzuführen: Massenkopieren, Löschen und Verschieben von Dateien; eine neue Upload-Methode, die es Ihnen ermöglicht, große Dateien hochzuladen und weniger Ressourcen zu verwenden; Methoden, um die Zugriffsrechte des aktuellen Benutzers auf Dateien, Gruppen, Aufgaben und Datenquellen zu erhalten; Hinzufügen der Möglichkeit, Berichtsparameter zu empfangen und zu bearbeiten, ohne den Bericht selbst zur Bearbeitung zu öffnen. Das Benutzerpanel wurde komfortabler gestaltet IDie Arbeit mit dem Online Designer wurde verbessert: es wurde eine Richtext-Vorschau und Stilvorlagen für ChartObject hinzugefügt. Wir haben die Möglichkeit eingeführt, den Avatar des Benutzers zu bearbeiten, haben einen neuen Papierkorb zum Löschen von Dateien erstellt, die Seite „Aufgaben“ verbessert und die Datenquellen überarbeitet, so dass gespeicherte Prozeduren verwendet und benutzerdefinierte Tabellen aus SQL hinzugefügt werden können. Für das Jahr 2025 planen wir die Veröffentlichung eines neuen Produkts und das Hinzufügen der Parameterübergabe zur StaticPreview UI.     Wir bedanken uns herzlich bei Ihnen für Ihr Vertrauen im Jahr 2024. Lassen Sie uns gemeinsam weitergehen und die Zukunft gestalten! Wir wünschen Ihnen frohe Weihnachten und einen guten Rutsch ins neue Jahr!  
18. Dezember 2024

Letzte Chance, 2024 mit Rabatt zu kaufen

Vom 18. bis 31. Dezember bieten wir Ihnen an, Berichtsbibliotheken für .NET und Delphi mit einem Rabatt von 25% zu erwerben. Dies ist eine großartige Gelegenheit, um sicherzustellen, dass Ihr Unternehmen im Jahr 2025 Ressourcen bei der Erstellung von Dokumenten und Berichten spart. Das Angebot gilt nicht für Verlängerungen und Upgrades. Nur Neuanschaffungen sind förderfähig.

© 1998-2026 Fast Reports Inc.