![]() |
AW: Stringlänge parsen
Zitat:
Zitat:
Ach was soll's gruss |
AW: Stringlänge parsen
Zitat:
Immer diese Unart, die Beiträge nachträglich zu editieren und neues Zeug rein zuschreiben, anstatt einen neuen Beitrag zu erstellen. Kannst du dir das nicht mal abgewöhnen? :roll: Die von dir genannte Funktion ist bspw. bei mir so definiert:
Delphi-Quellcode:
Daher meine Frage, woher deine GDIPlus-Übersetzung stammt.
//----------------------------------------------------------------------------
// FontFamily APIs //---------------------------------------------------------------------------- function GdipCreateFontFamilyFromName(name: PWCHAR; fontCollection: GPFONTCOLLECTION; out FontFamily: GPFONTFAMILY): GPSTATUS; stdcall; {$EXTERNALSYM GdipCreateFontFamilyFromName} Wenn du willst, kann ich dir ja mal meine Pascal-Unit zukommen lassen. |
AW: Stringlänge parsen
Ich habe diese Funktion editiert da sie mit PWCHAR nicht mit meinem Wrapper kompatible ist.
Und nein es gibt keine Problem sonst hätte mir GdipCheck das schon gemeldet. Ich verwende nix von progdigy sondern habe meine eigene Unit erstellt auf der Basis von Win32Api. Delphi hat die Eigenschaft alles unnötig aufzubauschen. Sieht man ja an den Kompilaten ;) mag ja sein das ich ein zwei Sachen nicht initialisiert habe.. meine Regel ist solange der Compiler nicht meckert kompiliert und alles rund läuft sollte das schon gut sein. gruss |
AW: Stringlänge parsen
Ach so das noch ;)
Neue Post! 8-)
Delphi-Quellcode:
war definiert nur nicht in der Funktion daher muss hier auch nix auf NIL gesetzt werden da GLOBAL!
strFormat: GPSTRINGFORMAT; // Tigü: war nicht definiert
boundingBox, layoutRect: TGPRectF; // Tigü: war nicht definiert
Delphi-Quellcode:
Das kannst du natürlich nicht sehen.
var
strFormat: GPSTRINGFORMAT; boundingBox: TGPRectF; layoutRect: TGPRectF; rcLayout: TGPRectF; brush: Pointer; EDIT:
Delphi-Quellcode:
Graphics: GPGRAPHICS; // Tigü: Hier war ein falscher Typ (Cardinal)
Der Typ ist nicht falsch wenn er das wäre würde mein ganzer Quelltext nicht funktionieren. Das ist eine Auslegungs Sache wie ich Graphics definiere. IN VB ist es Long, in PowerBasik ist es DWORD und bei mir ist es Cardinal (DWORD) wenn du so willst. gruss |
AW: Stringlänge parsen
Zitat:
Schau mal hier, wie die Jungs vom Wine-Projekt das gelöst haben: ![]() Du bist ja nun inzwischen etwas sattelfester in C/C++. Was für ein Typ hat das erste Argument? Zitat:
Kann es sein, dass bei dir strFormat, boundingBox und layoutRect globale Variablen sind? :twisted: Die fehlen schlicht und ergreifend in der Funktion und deswegen kann es nicht kompilieren. Wenn ich das nun einfüge und die beiden Rechtecke nicht per FillChar (oder ZeroMemory) initialisiere, haben die zufällige Werte und werden von GdipMeasureString nicht richtig ausgefüllt bzw. falsch übernommen. Das knallt dann spätestens beim berechnen von bH oder bW, weil Round einen "invalid floting point operation"-Fehler wirft. |
AW: Stringlänge parsen
Zitat:
Delphi-Quellcode:
Das ist OK! Habe es addiert.
FillChar(boundingBox, SizeOf(boundingBox), 0);
FillChar(layoutRect, SizeOf(layoutRect), 0); Danke. gruss |
AW: Stringlänge parsen
Zitat:
Das funktioniert wunderbar für 32-Bit bis ans Ende aller Tage. Aber unter 64-Bit wirst du schnell merkwürdige Fehler (höchstwahrscheinlich) bekommen (können). Die GDIPLUS-DLL wird dir 64-Bit Zeiger geben (Länge 8 Byte) und du wirst hart auf 32-Bit Länge casten und damit die Adresse abschneiden. Das führt unweigerlich zu merkwürdigen Fehlern und Zugriffsverletzungen. Das gilt auch für alle anderen Typen wie bpsw. Brush, Texture, Gradienten, Pen, Image, Bitmap, StringFormat, FontFamily etc. pp. |
AW: Stringlänge parsen
Hier mal ein Beispiel was falsche, nicht mitwachsende Typen für Ärger sorgen können:
![]() |
AW: Stringlänge parsen
Das ist korrekt was du sagst deshalb verwende ich für 64Bit ja auch die "normale" GDIPlus vom
![]() Ich weis das Graphics, Image und einige andere variablen Pointer sind. Bei mir sind diese fast alle Cardinal und glaube mir in 32Bit gibt es keine Probleme. Ich hatte einfach keine Lust 5 Units für 3 API Funktionen in meine LIB einzubinden die machen alleine schon 1MB aus. gruss |
AW: Stringlänge parsen
Nun ja wirklich weiter bin ich noch nicht muss mich mal schlau machen was Glados mit QuickSort meint.
Kenn mich damit nicht aus. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 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 by Thomas Breitkreuz