Hi …
(erst mal, Du brauchst hier nicht betteln, man hilft Dir auch so). Investiere Deine Energie lieber in das präzisere Formulieren der Aufgabenstellung.
Dann grundlegend ein Tipp: das ist nicht das erste Posting von Dir wo Du mit Anfängerpropblemen zu Pascal/Delphi daherkommst. Das ist keine Schande, wir haben alle mal so begonnen. Aber wenn es darum geht, dass Du Dir hier die Hausaufgaben machen lassen willst (Deine Beispiele riechen ziemlich nach dem was mir mein Lehrer damals in den 80-ern abverlangt hat), dann tust Du Dir damit keinen guten Dienst.
inhalt:=inttostr(ord(inhalt[1]+inhalt[5]))
Zu Deiner Formel. Ich versuche mal, Dir die Denkfehler aufzuzeigen statt Dir die fertige Lösung aufzuzeigen.
Du hast richtig erkannt, dass Du den 1. und den 5. Buchstaben umwandeln musst. Der Rest ist falscher wie er nicht sein könnte (entschuldige die Kritik). Abgesehen davon würde jede Lösung die funktioniert immer nur den 1. und den 5. Buchstaben beackern können - grad wirklich schlau wäre das nicht. Aber bleiben wir mal bei Deiner Formel.
Lass es uns einzeln anschauen. Klammern löst man am Übersichtlichsten von innen nach außen auf. also beginnt es mal mit
Inhalt[1]. Das ergibt als Ergebnis ein Zeichen, sprich, einen Buchstaben, den 1. in diesem Fall.
Inhalt[5]. Das ergibt auch einen Buchstaben, den 5.
Dann versuchst Du, die beiden zusammenzuzählen. Boah. An sich sollte Dich der Computer mit einem groben Syntaxfehler abwatschen dafür. Zahlen kann man zusammenzählen, aber doch keine Buchstaben. 1 + 1 ist 2, gut, aber was ist ‚f‘ + ‚x‘? Nix. Seltsamer Weise hat Herr Nikolaus Wirth (–> Wikipedia) es aber seinerzeit für nützlich befunden, diesem sinnlosen Ausdruck einen künstlichen Sinn zu geben, und seither kann man Buchstaben in Pascal über das + Zeichen aneinanderreihen: ‚f‘ + ‚x‘ = ‚fx‘. Das ist nun aber absolut nicht das was Du wolltest, oder?
Wie dem auch sei, das Endergebnis Deiner verunglückten ‚+‘ Operation ist also eine Zeichenkette, computerdeutsch „String“ genannt. Den String mutest Du der inttostr Funktion zu. Per Definition und Sprachreferenz erwartet sich diese Funktion eine Zahl und wandelt sie in eine Zeichenkette um. Du stopfst aber eine Zeichenkette hinein, in der nicht mal eine Zahl steht. Grobes Foul,
und selbst wenns nicht so wäre, wärest Du auf dem Glatteis: Du wolltest formulieren:
Beackere das 1. und das 5. Zeichen"
und hast formuliert:
„Addiere die Werte des ersten und 5. Zeichens“
Aber das funktioniert natürlich nicht. BITTE weis jmd. wie das
funktioniert???
Ein Tipp würde auch schon reichen.
Tipp: Du brauchst eine Schleife. Oder Du verlässt den tugendhaften Weg des ANSI Pascals aus den 80-er Jahren des letzten Jahrtausends und gibst der StringReplace Funktion eine Chance (ein Buchstabe ist ein Sonderfall eines Strings, der eben nur ein Zeichen lang ist). Was günstiger wäre hängt davon ab, wie die gesamte Aufgabenstellung ausgesehen hat. Ersetze imemr das erste und 5. zeichen wenns ein e ist klingt jetzt nicht grad nach einer Aufgabenstellung, sondern eher nach einem Teil von etwas Größerem.
Und auch für die Lösung der Aufgaben die Du mit Worten formuliert hast (ersetze E’ durch ‚e‘) ist die ORD Funktion nicht im Geringsten nützlich. Die wäre erst im Spiel wenn Du die Aufgabenstellung etwas allgemeiner formulierst und z.B. alle Kleinbuchstaben in Großbuchstaben wandeln würdest, und dabei ausschließlich auf der längst veralteten ASCII Tabelle aufbauen wolltest (was im Falle länderspezifischer Sonderzeichen zu hanebüchenen Ergebnissen mit ebenso hanebüchenen Workarounds führt).
Das war ein Tipp
Jetzt Du.
Armin.