Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - str probleme (not enough actual parameters)


chii - Mi 06.04.05 15:31
Titel: str probleme (not enough actual parameters)
hallo,

hab da ein problem mit der umwandlung von integer zu char(string)? könnte mir jemand sagen wie man das macht (ohne procedure)?

Vielen Dank


jasocul - Mi 06.04.05 15:35

:welcome: im DF.
Vermutlich meinst du folgendes:

Delphi-Quelltext
1:
 Zeichen := Chr(Zahl);                    


chii - Mi 06.04.05 16:08

jo DANKE das is schonmal nicht schlecht^^ und wie sieht das ganze für nen string aus?

also da komm jetzt nämlich der fehler vonwegen shortstr und char nicht kompatibel.

also meine zeile wäre so:

Delphi-Quelltext
1:
GT:=satz[i]+a;                    


wobei a meine umgewandelte integerzahl sein soll und satz is ein string.
was muss GT sein und wie kann ich GT dann in delphi in ein edit-fenster ausgeben?

~sorry bin so ein anfänger in delphi ~ -.-

Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt.


jasocul - Mi 06.04.05 17:34

user profile iconchii hat folgendes geschrieben:
jo DANKE das is schonmal nicht schlecht^^ und wie sieht das ganze für nen string aus?

also da komm jetzt nämlich der fehler vonwegen shortstr und char nicht kompatibel.

also meine zeile wäre so:

Delphi-Quelltext
1:
GT:=satz[i]+a;                    


wobei a meine umgewandelte integerzahl sein soll und satz is ein string.
was muss GT sein und wie kann ich GT dann in delphi in ein edit-fenster ausgeben?

~sorry bin so ein anfänger in delphi ~ -.-

Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt.

Ich weiß nicht genau was du vor hast, aber so geht das leider nicht.
satz[i] liefert dur nur einen Buchstaben aus Satz. Und zwar den an Stelle i.
GT muss ein String sein.
Wenn du den Buchstaben a an den Satz anhänge willst muss das so aussehen:

Delphi-Quelltext
1:
GT := Satz + a;                    

Ich habe das jetzt nicht mit Delphi getestet, aber es sollte stimmen.


chii - Mi 06.04.05 17:44

naja ich will den Buchstaben an Stelle i um a verschieben sozusagen ( hab das natürlich alles in eine for to do schleife gepackt)

geht das nicht das ich jeden einzelnen Buchstaben um a verschieben kann?


jasocul - Mi 06.04.05 17:53

Etwa so?:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
a:=3// beliebig gewählt
GT := '   ' + satz; // sicherstellen, dass GT lang genug ist (3 Leerzeichen voran gestellt). sonst gibts Schutzverletzungen.
for x := 1 to Length(satz) do
  GT[x+a] := satz[x];
end;
Delete(GT,1,3); // Die ersten 3 Zeichen wieder löschen.

Nicht elegant, aber von Prinzip sollte es funktionieren


chii - Mi 06.04.05 18:18

hmm funktioniert noch nicht ganz wie ich mir das vorgestellt habe, aber du hast mir wirklich schon sehr geholfen :!:

VIELEN DANK :wink:


jasocul - Do 07.04.05 07:12

user profile iconchii hat folgendes geschrieben:
hmm funktioniert noch nicht ganz wie ich mir das vorgestellt habe, aber du hast mir wirklich schon sehr geholfen :!:

VIELEN DANK :wink:

Ich weiß. Heute morgen unter der Dusche (Im Bad habe ich die besten Ideen 8) ) ist mir aufgefallen, dass das im Grunde Blödsinn ist, was ich programmiert habe.
Das Ergebnis ist nämlich gleich dem ursprünglichen String. :oops:

Delphi-Quelltext
1:
2:
a:=3// beliebig gewählt
GT := copy(satz,length(satz)-a+1,a) + copy(satz,1,length(satz)-a+1);

Damit werden die Zeichen verschoben und die letzten (in diesem Fall) 3 nach vorne gesetzt.
Ich hoffe, dass ich den Index richtig gesetzt habe. Im Prinzip sollte es aber jetzt klar sein.


MitschL - Do 07.04.05 09:51

Ähm,

soll nicht nur der Buchstabe an der Stelle i um a Zeichen verschoben werden? Wenn ich den Code von dir, jasocul, anschaue, dann kommt mir das komisch vor. Vielleicht hab ich aber auch ein Brett vor'm Kopf.

Delphi-Quelltext
1:
2:
3:
4:
5:
// Die einzelnen Segmente zusammenbauen
Result := copy( satz, 1, i - 1 );
Result := Result + copy( satz, i + 1, a );
Result := Result + satz[i];
Result := Result + copy( satz, i + a, length( satz ) );
Hm. Oder:

Delphi-Quelltext
1:
2:
3:
4:
// den Satz manipulieren
Result := satz;
Delete( Result, i, 1 );
Insert( satz[i], Result, i + a );

So will mir das erscheinen. :)

gegrüßt!


jasocul - Do 07.04.05 09:56

Ich hatte das so verstanden, dass alle Buchstaben verschoben werden sollen. Daher habe ich dann die "überflüssigen am Ende" einfach nach vorne gesetzt.
Das kann natürlich falsch interpertiert sein.
Zum verschieben eines Buchstabens hätte vermutlich eine Delete und Insert genügt.