Entwickler-Ecke
Sonstiges (Delphi) - Eine Komprimierung mit Buchstaben schreiben
Shadowlucker - Do 22.04.10 14:26
Titel: Eine Komprimierung mit Buchstaben schreiben
reset
elundril - Do 22.04.10 14:56
Nunja, einerseits fehlt dir ein
end;. Wenn du die begins nach dem "procedure" zählst kommst du auf 2, du hast aber nur 1 end drin. so nun zu anderen sache. Den Quellcode den du ausgegraben hast wandelt zahlen aus dem Dezimalsystem in Zahlen aus dem Binärsystem um, und zwar in die für menschen lesbare Version. Im PC sinds eh alles binärzahlen.
Der Unterschied zwischen einer Funktion und einer Prozedur ist ganz einfach das die Funktion einen Rückgabewert hat. Das heißt wenn du Programmcode ausführst der ein ergebnis hat (zb eine Addition zweier zahlen; liefert dann wieder eine zahl) dann kannst du eine Funktion benutzen. Der aufruf wäre dann zb sowas:
Delphi-Quelltext
1:
| Edit1.Text := IntToStr(addiere(1,2)); |
Weiters würde ich dir raten am anfang von der button1Click-Prozedur noch ein Label2.Caption := ''; zu schreiben, dann kannst du in deiner Schleife "Label2.caption := Label2.Caption + HexVonBuchstabe(edit1.text[zaehler]);" schreiben. Damit bekommst du dann den HexWert von allen Buchstaben in dem edit1-feld präsentiert und nicht nur den letzten.
Wie nun das umwandeln selbst geht weiß ich nicht, weil da etwas die angabe fehlt.
lg elundril
elundril - Do 22.04.10 15:04
Ich nehm ja mal an das wenn er es selber bauen soll, eher nicht auf vorhandene Funktionen zurückgreifen soll, oder?
lg elundril
Shadowlucker - Do 22.04.10 15:20
löschen
elundril - Do 22.04.10 15:32
ja, klar, HexVonBuchstabe musst du ja erst schreiben. ;) Und das IntToBin vergisskomplett, Binäre Zahl <> Hexadezimal! Und bitte verwende [delphi][/delphi]-Tags um den Quelltext hervorzuheben.
lg elundril
Shadowlucker - Do 22.04.10 15:40
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
ich komme jetzt gar nicht mehr mit :(
alles was ich versucht habe, wird halt immer schlimmer-.-
elundril - Do 22.04.10 15:50
Ok, also von vorne: Du hast ja schon mal die Button1Click-Procedure geschrieben, mit der du die einzelnen Zeichen aus dem Edit-Feld ausliest. Mit den Verbesserungen die ich dir in der ersten Antwort geschrieben hab passt diese auch wunderbar. Jetzt musst du nur mehr eine Function schreiben, die dir aus einem Kleinbuchstaben, eine Hexadezimalzahl macht. Und dann musst du die beiden Verknüpfen, eben das du die Function aus deiner Procedure heraus aufrufst.
lg elundril
Shadowlucker - Do 22.04.10 15:59
reset
elundril - Do 22.04.10 16:51
Shadowlucker hat folgendes geschrieben : |
| Ja das geht auch nicht .... Oh man so eine verzweifelung |
Gewöhn dir bitte an die Fehlermeldung zu posten. "Es geht nicht" macht es etwas schwer den Fehler zu finden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var zaehler: integer; begin Label2.Caption := ''; for zaehler:=1 to Length(text[zaehler]) do begin Label2.Caption := IntTohex(ord(Text[zaehler])); end; end; |
fällt dir vielleicht etwas auf bei den markierten Stellen?
lg elundril
Shadowlucker - Do 22.04.10 16:52
reset
elundril - Do 22.04.10 16:58
Bitte hör auf Beiträge immer komplett zu zitieren. Wenn du zitierst dann nur auszugsweise. Und hier ist zitieren ja eh nicht nötig weil sie deine Posts eh immer auf meinen letzten beziehen.
jetzt schau dir mal den Teil
Delphi-Quelltext
1:
| Label2.caption := Label2.Caption + HexVonBuchstabe(edit1.text[zaehler]);" |
von mir an und vergleich ihn mit den zwei zeilen von dir:
Delphi-Quelltext
1: 2:
| Label2.Caption := IntToBin1(ord(edit1.Text[zaehler]) - 96, 4); label2.caption:= label2.caption + label2.caption; |
Fällt dir was auf? Zum beispiel das du Zuerst Label2.Caption einen neuen wert zuweist und danach den einfach nur verdoppelst? Im nächsten schleifendurchlauf wird der alte wert natürlich wieder durch den neuen wert
ersetzt statt das er einfach nur angefügt wurden.
lg elundril
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!