Autor Beitrag
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Sa 05.10.02 23:47 
Nachdem ich im Forum immer wieder auf die Frage gestoßen bin "wie Konvertiere ich einen String s in ..." habe ich mir gedacht, dass sowas ins FAQ gehört und eine kurze Zusammenstellung verfasst. Selbiges könnte man für Int in ... sowie Real in ... und Pointer in ... auch machen. Würde am besten für in eine neues FAQ Namens ObjectPascal passen.

String -> Integer : StrToInt (FUNCTION)
String -> Real : Val (PROCEDURE)
String -> pChar : pChar (CAST)
String -> pChar/Pointer : @ (Operator)
String -> pChar/Pointer : Pointer (CAST)


Beispiel

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
VAR
 s    : String
 lpS  : PChar;
 p    : Pointer
 i    : Integer;
 r    : Real;

 delphi : Integer;

BEGIN

 i:= StrToInt(i);

 Val(s,r,delphi)

 lps := PChar(s);
 lps :=@s[1];
 lps := pointer(s);  // Schnellste Möglichkeit für String -> PChar

 p := @s[1];
 p := pointer(s);

END;


Moderiert von user profile icondelfiphan: Delphi-Tags hinzugefügt.
Moderiert von user profile iconjasocul: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 08.06.2006 um 09:51

_________________
Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 08.06.06 09:53 
Da sich doch einiges in Delphi geändert hat, habe ich diesen Beitrag für Ergänzungen und Verbesserungen wieder zur Diskussion bereit gestellt.
SmileySN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 297

WinXP, Win7
Delphi 2010 Professional
BeitragVerfasst: Do 08.06.06 18:05 
Hier mal als erstes die Funktion StrToInt() und IntToStr()

Bei der StrToInt() Funktion muss beachtet werden, dass der Wert den der übergebene String hat im Zahlenbereich vom Typ Integer liegen muss.
Buchstaben und Sonderzeichen dürfen nicht vorliegen.

Hier ein Beispiel dazu:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
Var
i:Integer;

begin
// Wertebereich Integer: -2.147.483.647 bis 2.147.483.647
// Die Punte stellen Tausendertrenner dar und keine Dezimalstelle
// Integerwerte haben keine Dezimalstellen

i:=StrToInt(Edit1.Text);      // Umwandlung von Text in Integer
// Edit1.Text darf nur Zahlen enthalten und kein Komma oder sonstige Zeichen
// Der Integerwertebereich muss beachtet werden
// ansonsten erscheint ein Meldefenster mit einer Fehlermeldung

Label1.Caption:=IntToStr(i);  // Umwandlung von Integer in String
// Hier kann nicht viel passieren, da i keinen nichtdarstellbaren
// Zustand einnehmen kann
end;
SmileySN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 297

WinXP, Win7
Delphi 2010 Professional
BeitragVerfasst: Do 08.06.06 18:23 
Hier das ganze noch für Gleitkommazahlen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button2Click(Sender: TObject);
Var
  Code: Integer;
  r: Real;

begin
// Wandlungen in Zahlen mit Nachkommastellen macht man mit dem Befehl Val()
// Leider wird hier ein Punkt und kein Komma als Dezimalzeichen verlangt

Val(Edit1.Text,r,code);
// In der variablen code ist der FehlerCode enthalten, wenn nicht konvertiert
// werden konnte. Wenn alles OK ist, dann steht Null drin.

If code = 0 Then
  Label1.Caption:=FloatToStr(r);

//Label1.Caption:=FloatToStr(r);  // Umwandlung von Real in String
end;