WinFuture-Forum.de: Turbo Pascal - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Turbo Pascal Buchstaben eines Textes in Variablen

#16 _moep_

  • Gruppe: Gäste

geschrieben 27. Februar 2005 - 00:56

Könntest du mir noch einen Tip geben was ich sonst nehmen soll?
wenn ich y auch als char deklariere(?) dann kommt eine Fehlermeldung "typ mismatch"
bei word ebenfalls. Da ich leider nicht so ganz weiß was sich mit wem versteht bin ich leicht hilflos. Noch ein kleiner Denkanstoß? Bitte.
0

Anzeige



#17 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 27. Februar 2005 - 01:40

OK, hab mich falsch ausgedrückt: Je nach Compiler ist einfach die Semantik von "String+Char" nicht definiert. Der eigentlich Fehler liegt in deinem ReadLn(x), wo doch x ein String und kein Char sein sollte.

Besser und kürzer:
var y:string; z:char; s:Byte;
const shift:byte=4;
Begin
Writeln('Text: '); ReadLn(y);
For s:=1 To length(y) Do Begin
 z:=y[s];
 z:=(z-'a'+shift)%26+'a';
 y[s]:=z;
 end; {for}
WriteLn(y); ReadLn;
End. {program}

Dieser Beitrag wurde von Rika bearbeitet: 27. Februar 2005 - 01:40

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#18 _moep_

  • Gruppe: Gäste

geschrieben 27. Februar 2005 - 12:55

Ok ich habe es ja fast verstanden nur:
 z:=(z-'a'+shift)%26+'a';
          ^^^


1.Fehlermeldung:
"Operand types do not match operator"
Habe die Zeile auch schon mal verändert doch ohne Erfolg, da:

2.Ich mir auch nicht sicher bin was in dieser zeile mit z passiert:
Aus der Variable z wird 'a' gelöscht und stattdessen der Wert 4 in diese gespeichert? Nur warum, dass man "a" löscht versteh ich.
Und was danach passiert, versteh ich auch nicht so ganz: Wie kann man denn zu a 26 hinzu zählen?
Oder wird a um 26 stellen im Alphabet verschoben?
Dann bleibt immer noch die Frage warum "a+shift"?

Vielen dank aber schonmal für den Ansatz den ich jetzt "nur noch" verstehen muss. :)
und an alle die sich mit dem Problem beschäftigen.

Dieser Beitrag wurde von moep bearbeitet: 27. Februar 2005 - 12:56

0

#19 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 27. Februar 2005 - 19:11

1. Eventuell kann man auch gleich Byte statt Char nehmen.
2. Nein. z ist ein Char, d.h. der ASCII-Wert des Buchstabens von y an der Stelle s. Dann wird der ASCII-Werz von 'a' abgezogen, um a..z auf 0..25 zu normieren. Dann die Addition mit shift modulo 26 und anschließend wieder zurücknormieren.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0