Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi String zu Cardinal (https://www.delphipraxis.net/35782-string-zu-cardinal.html)

hansklok 11. Dez 2004 19:13


String zu Cardinal
 
Hallo, weiß jemand von euch, wie ich einen String in eine Cardinalfolge umwandle?

Cardinal ist ja eigentlich nichts anderes als Integer, jedoch funktionierte es mit StrToInt nicht!

Danke für eure Antworten im Voraus!
mfg
hansklok

Dani 11. Dez 2004 19:14

Re: String zu Cardinal
 
Zitat:

Zitat von hansklok
Cardinal ist ja eigentlich nichts anderes als Integer, jedoch funktionierte es mit StrToInt nicht!

Hi,
Was genau funktioniert denn nicht? Was willst du machen? Wie lautet die Fehlermeldung?

hansklok 11. Dez 2004 19:19

Re: String zu Cardinal
 
Ja also, ich schreib an nem Grafikprogramm. Wenn ich nun beim herkömmlichen Canvas die Pen.Width auf 30 Stelle und ne Linie zeichne, dann hat diese abgerundete Ecken. Deshalb nehme ich etwas aus dem System:

Delphi-Quellcode:
const
  PenStyle = PS_Geometric or PS_Solid;
var
  sx,sy:integer;
  LogBrush: TLOGBRUSH;
begin  
  LogBrush.lbStyle := bs_Solid; //bsSolid ist ein Cardinalwert
  LogBrush.lbColor := clred;
  LogBrush.lbHatch := 0;

  with Form6.Bild.Canvas do begin
       Pen.Handle := ExtCreatePen(PS_Geometric+PS_Dash+PS_Endcap_Square+PS_Join_Round, StrToInt(Form4.ComboBox2.Text), LogBrush, 0, nil);
  end;
So ich möchte nun, dass der User über ne ComboBox das Brushstyle selbst auswählt, also bs_Clear oder BS_DiagCross etc. Das funktioniert aber nicht, wenn ich die hier mache:

Delphi-Quellcode:
LogBrush.lbStyle := Combobox1.Text;

jim_raynor 11. Dez 2004 19:19

Re: String zu Cardinal
 
Funktioniert nur nicht wenn die Zahl größer als 2^31 ist. In dem Fall solltest du StrToInt64 nutzen und den Int64 dann zum Cardinal casten. Natürlich ist es dann gefährlich wenn die Zahl größer als 2^32 ist.

[edit] Eventuell musst du es noch zu dem richtigen Typen casten mit Typ(Wert). Den Typen bekommst du am einfachst denn raus, wenn du das Programm kompilierst dann steht ja da was von Inkompatible Typen. [/edit]

hansklok 11. Dez 2004 19:23

Re: String zu Cardinal
 
@ jim_raynor:

Da stürzt mir das Programm ab, das hatte ich schon mal versucht!

Dani 11. Dez 2004 19:40

Re: String zu Cardinal
 
Delphi-Quellcode:
case Combobox1.ItemIndex of
 0: LogBrush.lbStyle := BS_SOLID;
 1: LogBrush.lbStyle := BS_CLEAR;
 2: LogBrush.lbStyle := BS_IRGENDWAS;
 {...}
 else
  {...};
end;

Mit StrToInt kannst du nicht die vom Editor verwendeten Namen von Konstanten in die entsprechenden Werte umwandeln. StrToInt liefert nur Integers aus Hexwert-Strings (z.B. '$AAF02') und Zahlen-Strings (z.B. '1234567').

Du könntest natürlich auch eine Komponente von TCombobox ableiten, die mit den Items verknüpfte Cardinal-Werte als Eigenschaft besitzt.

hansklok 11. Dez 2004 19:51

Re: String zu Cardinal
 
funktionier nicht!

Dani 11. Dez 2004 19:54

Re: String zu Cardinal
 
"funktionier nicht!" ist keine Fehlerbeschreibung :mrgreen:

hansklok 11. Dez 2004 19:56

Re: String zu Cardinal
 
Sorry, also sobald ich das Formular öffne, stürtzt das Programm wieder ab!

Dani 11. Dez 2004 19:58

Re: String zu Cardinal
 
Wie lautet denn die Fehlermeldung? (kannst du mit STRG+C in die Zwischenablage kopieren)
An welcher Stelle im Code bleibt die Ausführung stehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.
Seite 1 von 2  1 2      

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