AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ASCII umwandeln

Ein Thema von gaui · begonnen am 19. Jan 2009 · letzter Beitrag vom 20. Jan 2009
Antwort Antwort
gaui

Registriert seit: 29. Dez 2008
Ort: Tecklenburg
35 Beiträge
 
Delphi 5 Standard
 
#1

ASCII umwandeln

  Alt 19. Jan 2009, 18:53
Hallo alle zusammen ich hab heute versucht normale wörter ind ASCII-Codes um zuändern. Das klappt auch super nur das zurückwandeln macht mir reichtlich probleme, den beim wandeln in ascii wird jeder einzelne Buchstabe mit einem # getrennt. Sieht dann so aus
Delphi-Quellcode:
var lText,lErgebnis,laktuellerBuchstabe,lWert :string; z : integer;
begin
      lText := mText.text;
           for z:=1 to length (lText) do
               begin
                    laktuellerBuchstabe:= lText[z];
                    if laktuellerBuchstabe = ' then
                         begin
                              lWert := '32';
                              lWert := lWert + '#';
                          end;
           lErgebnis := lErgebnis + lWert;
           end;



         mascii.text:= lErgebnis;
end
Nur beim zurückwandeln habe ich keine Ahnung wie ich das machen soll, da in ich mit der for schleife und einer zuweisung immer nur ein zeichen speichern kann. Das Problem tritt auf das z.B. ich dann einen Ascii-code von z.b.65 also den Buchstaben A habe und der das dann nur als 6 wertet.
Könnt ihr mir helfen? mit freundlichenGrüßen
gaui
Angehängte Dateien
Dateityp: zip ascii_176.zip (176,8 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: ASCII umwandeln

  Alt 19. Jan 2009, 19:13
Vielleicht solltest du deine Typen überdenken. Wenn du ein Array of Char nimmst, kannst du ganz einfach direkt die Zeichen zuweisen. zB ist CharArray[0] := #32; dann ein Leerzeichen.
Oder du speicherst die Ascii-Codes in einem Array of Integer, und kannst dann mit ORD und CHR beliebig hin und her springen.

zB könntest du es so machen :
Delphi-Quellcode:
type
  TAsciiArray = array of Integer;

function TForm1.StringToAscii(Value: String): TAsciiArray;
var i : integer;
begin
  SetLength(Result, SizeOf(Value));
  for i := 0 to Sizeof(Result) do
    Result[i] := ORD(Value[i+1]);
end;

function TForm1.AsciiToString(Values: TAsciiArray): String;
var i : integer;
begin
  Result := '';
  for i := 0 to SizeOf(Values)-1 do
    Result := Result + CHR(Values[i]);
end;
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
gaui

Registriert seit: 29. Dez 2008
Ort: Tecklenburg
35 Beiträge
 
Delphi 5 Standard
 
#3

Re: ASCII umwandeln

  Alt 20. Jan 2009, 16:25
oke... hmm nur leider hab ich das Problem das ich diesen
Zitat:
Array of Char
nicht kenne, ist das so eine art Listensuchmaschine oder so? Die Delphi 5 Hilfe ist da auch nicht wirklich hilfreich. Ich habe mal ein paar weitere Fragen hier zu aufgeschrieben , wäre nett wenn ihr es mir erklären könnt thx im vorraus gaui


Delphi-Quellcode:
type
  TAsciiArray = array of Integer; //Was wird hier den erstellt?

function TForm1.StringToAscii(Value: String): TAsciiArray; //was bedeutet den Value
var i : integer;
begin
  SetLength(Result, SizeOf(Value)); // String- oder dynamische Array-Variable (Delphihilfe) aber was bringt die?
  for i := 0 to Sizeof(Result) do
    Result[i] := ORD(Value[i+1]); //ich habe dieses ORD schon mal gesehen aber was bedeutet das bzw. der Zweck von ihm
end;
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ASCII umwandeln

  Alt 20. Jan 2009, 17:09
Hallo. Ja, ich vergaß mich jeglicher Erklärungen dazu.
Delphi-Quellcode:
type
  TAsciiArray = array of Integer;
Beschreibt nichts weiter als eine Typendeklaration. Dabei ist TAsciiArray ein dynamisches Array, welches Integer speichern kann.
Es wird benötigt, um den Rückgabewert der Funktion festlegen zu können.
function foo : array of Integer würde halt nicht gehen.
Value (engl., Wert) ist in diesem Fall nichts weiter als ein Parameter, den die Funktion erwartet. Der Name des Parameters kann beliebig sein, jedoch aufgrund des Wiedererkennungswertes verwndet man mit der Zeit für bestimmte Sachen immer wiederkehrende Bezeichnungen.
SetLength(Result, SizeOf(Value)); Hier wird die Größe des von der Funktion zurückgegebenen Arrays festgelegt. Die Größenverhältnise sind hier bei 1:1 (Eingabe = Ausgabe).
Result[i] := ORD(Value[i+1]); ORD() gibt dir den Ordinalwert zurück, in dem Fall ist es der Ascii-Wert. Weiß nicht ob die Funktin noch für andere Sachen zu gebrauchen ist.

Die 2. Funktion funktioniert einfach nur "andersherum".
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz