Autor Beitrag
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 17.07.08 19:06 
Die Frage ist hier aufgetreten, und interessiert mich jetzt auch selbst: wie kann man einen String einem Array of Char zuweisen. Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
 myText = array[1..30] of Char;

var
 text1: myText;


text1 := edit1.text;  // inkompatible typen
text1 := myText(edit1.text); // Ungültige Typumwandlung


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).

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Do 17.07.08 19:20 
Hehe, genau das was ich auch gebraucht hab.

StrPCopy, StrPLCopy oder CopyMemory. Siehe Hilfe :-P

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Tilman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 17.07.08 22:00 
aha, okay. werds mal testen.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 18.07.08 20:19 
Okay, habs jetzt hinbekommen: pMyText(pChar(edit1.text))^ = tMyText. Nicht schön, aber selten^^.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 18.07.08 20:20 
Das ist doch nicht dein Ernst :shock:

ausblenden Delphi-Quelltext
1:
2:
  SetLength(MyArray, Length(MyString));
  CopyMemory(@MyArray[0], @MyString[1], Length(MyArray));

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Tilman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 18.07.08 20:31 
user profile iconGTA-Place hat folgendes geschrieben:
Das ist doch nicht dein Ernst :shock:

ausblenden 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())^ ?

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)


Zuletzt bearbeitet von Tilman am Fr 18.07.08 20:40, insgesamt 1-mal bearbeitet
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 18.07.08 20:40 
Dann nimm die von Delphi dafür vorgesehen Funktion StrPCopy:

ausblenden Delphi-Quelltext
1:
StrPCopy(MyArray, MyString);					

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Tilman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 18.07.08 20:48 
user profile iconGTA-Place hat folgendes geschrieben:
Dann nimm die von Delphi dafür vorgesehen Funktion StrPCopy:

ausblenden 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.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 18.07.08 21:20 
Nein, dein Array muss nur bei 0 anfangen (Array[0..9] of Char). Siehe Delphi-Hilfe.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)