Entwickler-Ecke
Sonstiges (Delphi) - Schrift per Programm in zahlen umwandeln
Serious - Fr 24.01.03 19:22
Titel: Schrift per Programm in zahlen umwandeln
Ich muss für die Schule ein aufgabe lösen, welche Erfordert, dass ein Wort in eine Zahlenkette umgewandelt wird. Dabei gilt
A=1
B=2 usw.
Leider überfordert diese Aufgabe meine bisherigen Kenntnisse, deshalb würde ich mich freuen wenn mir jemand helfen dieses Programm zu lösen.
Zu erreichen bin ich über icq 91731774 oder im quakenet #gmpo.ut
Anonymous - Fr 24.01.03 19:47
Ich würde vorschlagen, daß du schon mal anfängst und da wo du Probleme bekommst einfach fragst. Auf diese Weise wirst du das Programm auch verstehen und kannst es dem Lehrer gegenüber erklären.
Ich glaube nicht, daß es irgendeiner für dich erstellt. In der Regel reagieren die Programmier ein wenig alergisch auf Schüler die ihre Hausaufgaben komplett gelöst haben wollen. Aber keiner hat was dagegen einem dabei zu helfen.
Fang doch erstmal damit an eine genaue Beschreibung der Aufgabe hier im Forum zu posten.
matze - Fr 24.01.03 21:18
kleiner tip: ich denke ein array wird dir weiterhelfen !!!
Christian S. - Fr 24.01.03 21:42
Außerdem ist die Funktion Ord(Char) sicherlich hilfreich. Und der Blick auf eine ASCII-Tabelle kann auch nicht schaden.
majolo - Fr 24.01.03 22:02
| Zitat: |
| ...der Blick auf eine ASCII-Tabelle kann auch nicht schaden |
..und eine Betätigung der Suchen Funktion auch nicht. :wink:
Ich bin ziemlich sicher, dass so etwas schon mal behandelt wurde.
Schau mal nach.
Gruss
majolo
Serious - Sa 25.01.03 02:22
danke für die tips! :D
Ich probiers ma weiter :D
Serious - Sa 25.01.03 15:06
Also habe die Suchfunktion benutzt und nichts gefunden!
Darum probiere ich es mit einer bessere Programm beschreibung, denn Arrays haben wir noch nicht ausgiebig behandelt.
Also grafische Oberfläche habe ich eine Edit Komponente und eine Button Komponente genommen.
Nun wollte per Button Klick den text in einem Array speichern und zuerst die Länge bestimmen :D. Dabei tauchten allerdings erste Probleme auf, da sich die Länge des Arrays nicht wirklich bestimmen ließ.
Das weitere Programm hab ich mir so vorgestellt, dass immer ein Buchstabe geprüft wird, in eine Zahl umgewandelt wird, in einer neuen Variablen gespeichert wird und aus dem Array gelöscht wird. Der nächste Buchstabe soll dann als Zahl an die 1. zahl angehängt werden usw.
Nur weiss ich nicht wie herrausgefunden wird ob das Zeichen ein Buchstabe ist und wie arrays behandelt werden.
Terra23 - Sa 25.01.03 15:15
Du solltest wie folgt anfangen:
Schleife (For I:=1 To XXX)
Wenn-Bedingung (If Then Else)
Mit einem Array geht das natürlich einfacher, aber diese Dinger habe ich irgendwie nie wirklich kapiert.
Um Popov zuzustimmen, es ist möglich, dir zu helfen, aber nicht, es zu programmieren. Das ist langweilig; selbst gemacht erfreut einen doch ohnehin mehr als vorgebastelt.
Noch Fragen?
Grüße, Terra23..
Christian S. - Sa 25.01.03 15:27
Ich tippe mal, dass Matzes Tipp dahin tippte, dass Du die bereits umgewandelten Zahlen in das Array schreibst, nicht den Text.
MfG,
Peter
P.S.: Die Länge eines Arrays bestimmt man mit "Length" und man legt sie mit "SetLength" fest. Vorsicht: dynamische Arrays (also jene, bei denen man die Länge festlegen kann) beginnen immer mit 0, der höchste Index ist also immer eins weniger als die Länge.
Serious - Sa 25.01.03 15:29
das Xxx am ende der schleife wollte ich ja wegbekommen indem ich die länge des Wortes bestimme.
Christian S. - Sa 25.01.03 15:34
Die Länge eines Strings bestimmst Du ebenfalls mit Length(String):Integer.
Terra23 - Sa 25.01.03 15:34
Eine kleine Hilfe:
For I:=1 To Length('Testsatz')
entspricht
For I:=1 To 8
Grüße, Alex..
Serious - Sa 25.01.03 15:39
wenn ich jetzt noch wüsste wie man immer das erste zeichen eines Strings abfragt bzw. löscht könnt ichs alleine :D
Terra23 - Sa 25.01.03 15:44
If Testsatz[I]='A' Then ... Else ...
Grüße und viel Erfolg..
Serious - Sa 25.01.03 15:53
mein compiler bricht immer ab. Das programm sieht bisjetzt so aus
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); begin wortnorm:=edit1.text; For I:=1 To Length(wortnorm) do if wortnorm[I]='A'then begin if wortzahl = '' then wortzahl:= '1' else wortzahl:= Wortzahl + '1'; end |
als fehlermeldung erhalte ich immer ,
Quelltext
1:
| [Error] Unit1.pas(32): Undeclared identifier: 'I' |
habe vorerst nur einen Buchstaben behandelt, da ich das Programm erst testen wollte
Christian S. - Sa 25.01.03 15:55
zum Löschen benutzt Du "Delete". Wie das genau funktioniert, steht in der Hilfe.
Du könntest aber auch mit einer Schleife (For-Do) die Variable i von 1 bis Length(string) laufen lassen und mit dem, was Terra23 vor mir gepostet hat, arbeiten. Dann musst Du gar nichts löschen.
Christian S. - Sa 25.01.03 15:57
Hm, im Unterricht wohl nicht aufgepasst. Variablen muss man natütrlich deklarieren.
Serious - Sa 25.01.03 16:04
das programm startet jetzt zwar ohne fehlermeldung allerdings.
Wird in der Edit Komponente nichts ausgegeben, obwohl etwas in der Variablen Wortzahl gespeichtert wurde
Christian S. - Sa 25.01.03 16:26
Woher soll das Programm auch wissen, dass das, was in Wortzahl steht, in Deinem Editfeld erscheinen soll. Das musst Du schon noch festlegen!
Serious - Sa 25.01.03 16:33
hab ich gemacht
edit1.text:=wortzahl;
steht nur weiter unten in der prozedur
Terra23 - Sa 25.01.03 16:45
Also nun nochmal:
Du gibst in ein Edit-Feld etwas ein, ja? In einem Label soll das auch stehen, bloß mit Zahlen statt Buchstaben.
Elegante Lösung: Arrays.
Meine Lösung:
Quelltext
1:
| For I:=1 To Length(Edit1.Text) Do Begin ... End; |
Zwischen Begin und End kommt einfach nur noch:
Quelltext
1: 2:
| If Edit1.Text[I]='A' Then Ziffernsatz:='1' Else If Edit1.Text[I]='B' Then Ziffernsatz:=2 usw.. |
I -> Integer;
Ziffernsatz: String (Denn du mußt ja Stringaddition vornehmen, also für jeden Buchstaben -> Haus = 8/1/21/19 = 812119)
Noch Fragen? Ich kann's dir nicht programmieren, habe kein Delphi und wäre deinen Mitschülern gegenüber nicht fair.
Grüße..
Moderiert von
Tino: Code-Tags hinzugefügt.
Christian S. - Sa 25.01.03 16:46
Ich liebe es, wenn die Leute immer erst hinterher mit dem gesamten Quelltext rausrücken!
Poste bitte mal den gesamten Quelltext (außer der Typ-Definition für die Form).
Terra23 - Sa 25.01.03 16:46
'2' muß es heißen, weil es ja ein String ist. Sorry...
Serious - Sa 25.01.03 17:04
Vielen Dank, hab das Project jetzt fertig gestellt :D
Mein Fehler war das fehlen von Kleinbuchstaben, deswegen erfolgte keine Ausgabe im edit feld
Serious - Sa 25.01.03 17:30
wollte jetzt aus SPaß anner Freude das ganze mit einem weiteren Button Button klick fückgängig machen. Also 1\ = A , denn wenn man es auf die selbe möglichkeit versucht wie A -> 1\ funktioniert das nicht, da ich nur den 1. charakter abfrage
Christian S. - Sa 25.01.03 17:41
Was ist jetzt Deine Frage?
Serious - Sa 25.01.03 17:49
ob es eine möglichkeit strings immer bis zu einem bestimmten zeichen abzufragen, da die abstände ja variabel sind
Christian S. - Sa 25.01.03 17:54
Einen bestimmten Teil eines Strings bekommst Du mit der Funktion "Copy". Die Position eines Zeichens in einem String bekommst Du mit "Pos", aber leider immer nur das erste Vorkommen.
Hier müsstest Du es also wahrscheinlich wirklich so machen, dass Du immer den Teil, den Du schon "bearbeitet" hast, aus dem String löschst. Wenn Dein String also so aussieht:
"1/2/3/"
Und Du hast "1/" als "A" umgewandelt, dann lösche das "1/" vorne aus dem String.
MfG,
Peter
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!