AGB  ·  Datenschutz  ·  Impressum  







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

Ausgabe von TextHeight stürzt ab

Ein Thema von Nikodel · begonnen am 7. Feb 2019 · letzter Beitrag vom 7. Feb 2019
Antwort Antwort
Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#1

Ausgabe von TextHeight stürzt ab

  Alt 7. Feb 2019, 16:41
Hi,
jetzt habe ich einen ganz merkwürdigen Effekt. Ich möchte testweise die Texthöhe in einem TEdit ausgeben:
Code:
procedure TMainForm.drucken1Click(Sender: TObject);
{ es wird von einem A4-Format ausgegangen }
var
  PrintForm: TForm2;
  txth: integer;
begin
  if idx_wd >= 0 then
  begin
    if PrintDialog1.Execute then
    begin
      PrintForm := TForm2.Create(self); // <<-- hier wird das Objekt von Unit2 erzeugt
      ...
      try
        PrintForm.ShowModal;
        // jetzt stehen die Ränder fest
        txth:= PrintForm.Canvas.TextHeight('9');      
        ...
        len_ltick:= ...
        len_stick:=len_ltick - PrintForm.Canvas.TextHeight('9');

      finally
        PrintForm.Free;
      end;
      // Printer.Orientation wird bereits in PrintDialog1 festgelegt
      Edit2.Text:='bl='+border_left.ToString+' bt='+border_top.ToString+
                  ' br='+border_right.ToString+' bb='+border_bottom.ToString+
                  '  ltick='+len_ltick.ToString+' stick='+len_stick.ToString+
                  '  txth='+txth.ToString;         // <<-- txth kann ausgegeben werden
      Application.ProcessMessages;
      Edit2.Text:=Edit2.Text+(PrintForm.Canvas.TextHeight('9')).ToString;  <<-- hier gibt es eine Exception
      Application.ProcessMessages;
      ...
Die Zeilen
Code:
var
  ...
  txth: integer;
...
  txth:= PrintForm.Canvas.TextHeight('9');
...
  Edit2.Text:=Edit2.Text+(PrintForm.Canvas.TextHeight('9')).ToString;
sind extra zum Aufzeigen des Problems eingefügt.

Der Wert von txth lässt sich fehlerfrei berechnen und im Edit2 ausgeben.
Die direkte Ausgabe von "(PrintForm.Canvas.TextHeight('9')).ToString" ergibt jedoch eine Exception "Zugriffsverletzung bei Adresse ..."
Die Variante mit "IntToStr(PrintForm.Canvas.TextHeight('9'))" ergibt das gleiche Problem.

Was ist denn da falsch daran?
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ausgabe von TextHeight stürzt ab

  Alt 7. Feb 2019, 16:46
PrintForm wurde bereits freigegeben in deinem Codebeispiel (Du musst PrintForm.Free; weiter hinter schieben)
Sven Harazim
--

Geändert von sh17 ( 7. Feb 2019 um 16:49 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Ausgabe von TextHeight stürzt ab

  Alt 7. Feb 2019, 16:47
Hallo,
nimm mal die doppelten Klammern weg

Edit2.Text:=Edit2.Text+PrintForm.Canvas.TextHeight('9').ToString;
Heiko
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: Ausgabe von TextHeight stürzt ab

  Alt 7. Feb 2019, 16:52
Hallo,
nimm mal die doppelten Klammern weg
Bringt das die Instanz zurück, die er kurz zuvor zerstört hat? Welch ein Magie!
  Mit Zitat antworten Zitat
Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#5

AW: Ausgabe von TextHeight stürzt ab

  Alt 7. Feb 2019, 18:42
Zitat:
PrintForm wurde bereits freigegeben in deinem Codebeispiel (Du musst PrintForm.Free; weiter hinter schieben)
Wow, danke, so einfach kann es sein
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Ausgabe von TextHeight stürzt ab

  Alt 7. Feb 2019, 19:02
Bringt das die Instanz zurück, die er kurz zuvor zerstört hat? Welch ein Magie! *
ÖH!!!
Heiko

Geändert von hoika ( 7. Feb 2019 um 19:06 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 21:10 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