AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringlänge parsen

Ein Thema von EWeiss · begonnen am 4. Sep 2017 · letzter Beitrag vom 7. Sep 2017
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
EWeiss
(Gast)

n/a Beiträge
 
#21

AW: Stringlänge parsen

  Alt 4. Sep 2017, 16:09
Zitat:
Das ist doch eine ganz normale Frage?
Jo einmalig aber nicht fortlaufend.

Zitat:
Ich will ja nicht meckern, aber hast du das gerade aus dem Gedächtnis abgetippt oder irgendwoher kopiert?
Ist die selbstgemacht oder irgendwoher kopiert?
Mache ich überhaupt was selbst oder kopiere ich nur alles... LOL.
Ach was soll's

gruss
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#22

AW: Stringlänge parsen

  Alt 4. Sep 2017, 16:10

Delphi-Quellcode:
function GdipCreateFontFamilyFromName(
  name: WideString;
  fontCollection: Pointer;
  out FontFamily: GpFontFamily
): GPSTATUS; stdcall; external LibGdiPlus;
Was für ein PWideChar?
und so könnte ich weiter machen... aber lassen wir das.
Bist du fertig mit editieren oder kann man mal antworten?
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?

Die von dir genannte Funktion ist bspw. bei mir so definiert:

Delphi-Quellcode:
//----------------------------------------------------------------------------
// FontFamily APIs
//----------------------------------------------------------------------------

  function GdipCreateFontFamilyFromName(name: PWCHAR;
    fontCollection: GPFONTCOLLECTION;
    out FontFamily: GPFONTFAMILY): GPSTATUS; stdcall;
  {$EXTERNALSYM GdipCreateFontFamilyFromName}
Daher meine Frage, woher deine GDIPlus-Übersetzung stammt.
Wenn du willst, kann ich dir ja mal meine Pascal-Unit zukommen lassen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#23

AW: Stringlänge parsen

  Alt 4. Sep 2017, 16:20
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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#24

AW: Stringlänge parsen

  Alt 4. Sep 2017, 16:31
Ach so das noch
Neue Post!

Delphi-Quellcode:
strFormat: GPSTRINGFORMAT; // Tigü: war nicht definiert
boundingBox, layoutRect: TGPRectF; // Tigü: war nicht definiert
war definiert nur nicht in der Funktion daher muss hier auch nix auf NIL gesetzt werden da GLOBAL!

Delphi-Quellcode:
var
  strFormat: GPSTRINGFORMAT;
  boundingBox: TGPRectF;
  layoutRect: TGPRectF;
  rcLayout: TGPRectF;
  brush: Pointer;
Das kannst du natürlich nicht sehen.

EDIT:

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

Geändert von EWeiss ( 4. Sep 2017 um 16:41 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#25

AW: Stringlänge parsen

  Alt 4. Sep 2017, 16:42
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
Du wirst schon wissen was du tust, aber wäre es nicht sinnvoller gewesen deinen Wrapper entsprechend anzupassen, anstatt die Übersetzung der DLL-Funktion?

Schau mal hier, wie die Jungs vom Wine-Projekt das gelöst haben: https://source.winehq.org/WineAPI/Gd...yFromName.html

Du bist ja nun inzwischen etwas sattelfester in C/C++.
Was für ein Typ hat das erste Argument?

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.
Auch wenn wir uns sowas alle wünschen würden, aber der Compiler ist da etwas schludderig und keine Hilfe.
Kann es sein, dass bei dir strFormat, boundingBox und layoutRect globale Variablen sind?
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#26

AW: Stringlänge parsen

  Alt 4. Sep 2017, 16:48
Zitat:
Kann es sein, dass bei dir strFormat, boundingBox und layoutRect globale Variablen sind?
korrekt.. sind global habe ich ja einen Post über dir geschrieben.

Delphi-Quellcode:
        FillChar(boundingBox, SizeOf(boundingBox), 0);
        FillChar(layoutRect, SizeOf(layoutRect), 0);
Das ist OK! Habe es addiert.
Danke.

gruss
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Stringlänge parsen

  Alt 4. Sep 2017, 16:57
EDIT:

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.
Ich möchte dich an dieser Stelle ausdrücklich warnen!
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.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#28

AW: Stringlänge parsen

  Alt 4. Sep 2017, 17:00
Hier mal ein Beispiel was falsche, nicht mitwachsende Typen für Ärger sorgen können:
http://www.delphipraxis.net/181512-s...imagelist.html
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#29

AW: Stringlänge parsen

  Alt 4. Sep 2017, 17:05
Das ist korrekt was du sagst deshalb verwende ich für 64Bit ja auch die "normale" GDIPlus vom http://www.progdigy.com

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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#30

AW: Stringlänge parsen

  Alt 4. Sep 2017, 17:15
Nun ja wirklich weiter bin ich noch nicht muss mich mal schlau machen was Glados mit QuickSort meint.
Kenn mich damit nicht aus.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


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 19:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz