Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Einen String in Array of Char konvertieren
Tilman - Do 17.07.08 19:06
Titel: Einen String in Array of Char konvertieren
Die Frage ist
hier [
http://www.delphi-forum.de/viewtopic.php?t=85053&start=20&postorder=asc] aufgetreten, und interessiert mich jetzt auch selbst: wie kann man einen String einem Array of Char zuweisen. Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type myText = array[1..30] of Char;
var text1: myText;
text1 := edit1.text; text1 := myText(edit1.text); |
Also würde mich interessieren wie das geht. Klar einfac hBuchstabe für Buchstabe durchgehen. Aber ob man das irgendwie doch noch casten kann, auch auf die Gefahr einer Exception hin (Wenn der String zu lang ist).
Christian S. - Do 17.07.08 19:14
Schon ewig kein Delphi mehr gemacht, aber:
Ich würde mir eine Hilfs-String-Variable machen und eine Typen PMyText = ^TMyText. Dann deklariere ich eine Variable vom Typ PMyText und lasse die auf das erste Zeichen des Hilfs-Strings zeigen.
GTA-Place - Do 17.07.08 19:20
Hehe, genau das was ich auch gebraucht hab.
StrPCopy, StrPLCopy oder CopyMemory. Siehe Hilfe :-P
Tilman - Do 17.07.08 22:00
aha, okay. werds mal testen.
Bergmann89 - Do 17.07.08 23:44
HI,
ich dachte immer ein String is das selbe wie ein Array of PChar, denn mann kann ja auch auf die Teilelemente des Strings mit MyString[x] zugreifen?! Das verwirrt mich jetzt irgendwie ^^
MfG Bergmann.
Tilman - Fr 18.07.08 20:19
Okay, habs jetzt hinbekommen: pMyText(pChar(edit1.text))^ = tMyText. Nicht schön, aber selten^^.
GTA-Place - Fr 18.07.08 20:20
Das ist doch nicht dein Ernst :shock:
Delphi-Quelltext
1: 2:
| SetLength(MyArray, Length(MyString)); CopyMemory(@MyArray[0], @MyString[1], Length(MyArray)); |
Tilman - Fr 18.07.08 20:31
GTA-Place hat folgendes geschrieben: |
Das ist doch nicht dein Ernst :shock:
Delphi-Quelltext 1: 2:
| SetLength(MyArray, Length(MyString)); CopyMemory(@MyArray[0], @MyString[1], Length(MyArray)); | |
Okay, funzt auch, aber SetLength hab ich weggelassen - tMyText ist doch kein dynamisches array, länge ist ja bekannt.
// edit noch eine Frage: wenn ich sicherstellen kann dass edit1.text genau 30 zeichen entspricht, und das muss ich ja eh siehe oben, was spricht dann gegen pMyText(pChar())^ ?
GTA-Place - Fr 18.07.08 20:40
Dann nimm die von Delphi dafür vorgesehen Funktion StrPCopy:
Delphi-Quelltext
1:
| StrPCopy(MyArray, MyString); |
Tilman - Fr 18.07.08 20:48
GTA-Place hat folgendes geschrieben: |
Dann nimm die von Delphi dafür vorgesehen Funktion StrPCopy:
Delphi-Quelltext 1:
| StrPCopy(MyArray, MyString); | |
Diese erfordert jedoch einen PAnsiChar (zumindest in meinem Delphi7 gibts keine Überladene Version). Müsste dann also mit new() erst das array erzeugen. Naja egal, die grundsätzlichen Vorgehensweisen kenn ich ja nun.
GTA-Place - Fr 18.07.08 21:20
Nein, dein Array muss nur bei 0 anfangen (Array[0..9] of Char). Siehe Delphi-Hilfe.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!