AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi #70^2^!^'^%#58 <- Wieso funktioniert das?
Thema durchsuchen
Ansicht
Themen-Optionen

#70^2^!^'^%#58 <- Wieso funktioniert das?

Ein Thema von Wormid · begonnen am 7. Nov 2003 · letzter Beitrag vom 7. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#1

#70^2^!^'^%#58 <- Wieso funktioniert das?

  Alt 7. Nov 2003, 13:43
Bevor jemand meckert, das IST ein aussagekräftiger Titel... (War doch kein guter Titel... )

Ich bin in einem älteren Beitrag über die Signatur von Aya gestolpert... Und jetzt interessiert mich doch tatsächlich, wie das wohl funktioniert.

#65^,^3^/#44#32^+^!^.^.#32^-^)^2#32^%^)^.^%^2#32^%^2^+^,#228^2^%^.#44#32^7^!^2 ^5^-#32^$^!^3#32^$^!#32^)^2^'^%^.^$^7^)^%#32#80^/^)^.^4^%^2^-#228#223^)^'#32^'^%^(^4#32^-^)^4#32^$^%^-#32#83^4^2^)^.^'#63

Um "echte" Strings in die Form da oben umzuwandeln, habe ich mir mal folgende Funktion gebastelt:

Delphi-Quellcode:
function StringToAya(S: String): String;
var
  i: Integer;
begin
  Result := '';
  for i := 1 to Length(S) do
    if (Ord(S[i]) >= 97) and (Ord(S[i]) <= 122) then
      Result := Result + '^' + Chr(Ord(S[i]) - 64)
    else
      Result := Result + '#' + IntToStr(Ord(S[i]));
end;
Ich bin da mehr oder weniger durch probieren hingekommen, kann mir also jemand erklären, was dahintersteckt? (Die Form #97... ist mir schon klar, aber mit dem ^$ = d werde ich nicht fertig.)

Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2

Re: #87^)^%#32^&^5^.^+^4^)^/^.^)^%^2^4#32^$^!^3#63

  Alt 7. Nov 2003, 13:45
Das sind einfach nur Zeiger auf die jeweiligen Ascii-Zeichen, sonst nichts.

Und so ne aufwendige Prozedur brauchst auch nicht, eine einfache Message reicht auch!!
Code:
ShowMessage(#65^,^3^/#44#32^+^!^.^.#32^-^)^2#32^%^)^.^%^2#32^%^2^+^,#228^2^%^.#44#32^7^!^2^5^-#32^$^!^3#32^$^!#32^)^2^'^%^.^$^7^)^%#32#80^/^)^.^4^%^2^-#228#223^)^'#32^'^%^(^4#32^-^)^4#32^$^%^-#32#83^4^2^)^.^'#63);
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#3

Re: #87^)^%#32^&^5^.^+^4^)^/^.^)^%^2^4#32^$^!^3#63

  Alt 7. Nov 2003, 13:50
Also im moment raff ich davon mal überhaupt nichts
Wie geht das?
Die Proc von Wormid versteh ich ja einigermaßen aber das von DanielB raff ich irgendwie überhaupt nicht
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#4

Re: #87^)^%#32^&^5^.^+^4^)^/^.^)^%^2^4#32^$^!^3#63

  Alt 7. Nov 2003, 13:51
Moin,

die Prozedur ist ja auch für den umgekehrten Weg: Klartext -> Zeiger!

Das es sich irgendwie um Zeiger handelt, habe ich mir gedacht, aber nachvollziehen kann ich es nicht.

Ascii: 97 = a
bei der Variante oben: ^! = a
und Ascii 33 = ! ...

Wie passt das also bitte zusammen?

@General: Was ist an dem ShowMessage so kompliziert?
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#5

Re: #87^)^%#32^&^5^.^+^4^)^/^.^)^%^2^4#32^$^!^3#63

  Alt 7. Nov 2003, 13:52
Also das sind Pointer auf die jeweiligen Chars, und die Showmessagefkt zeigt die als Buchstaben an mehr nicht, Showmessage ist übrigends eine fkt, die Delphi selbst bietet

Edit: Mist Wormid war schneller
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#6

Re: #87^)^%#32^&^5^.^+^4^)^/^.^)^%^2^4#32^$^!^3#63

  Alt 7. Nov 2003, 13:55
An dem ShowMessage an sich nichts...Nur ich hab mich gefragt warum der den String anzeigt..Hab Pointer irgendwie noch nie so wirklich gerafft
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: #87^)^%#32^&^5^.^+^4^)^/^.^)^%^2^4#32^$^!^3#63

  Alt 7. Nov 2003, 13:55
Zitat von Wormid:
Bevor jemand meckert, das IST ein aussagekräftiger Titel...
Ich muß Dich leider enttäuschen. Dies ist kein aussagekräftiger Titel. Sinn und Zweck eines Titels ist es, daß ein anderer Benutzer der DP schon alleine durch das Lesen dieses Titels erfährt, worum es in dem zugehörigen Beitrag geht.


Du tust uns allen einen Gefallen, wenn Du diesen Titel rasch noch mal editierst. (Noch kannst Du es selber. ).
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#8

Re: #87^)^%#32^&^5^.^+^4^)^/^.^)^%^2^4#32^$^!^3#63

  Alt 7. Nov 2003, 13:56
Aber wieso ist ein '!' (ordinal 33) ein Pointer auf 'a'... Steht am Anfang im Memory die Ascii-Tabelle? Und wenn ja, warum dann nur die Kleinbuchstaben? Oder kann ich auf die Art da oben nur nicht an die großen dran?

Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#9

Re: #70^2^!^'^%#58 <- Wieso funktioniert das?

  Alt 7. Nov 2003, 14:06
Verwende diesen Code
Delphi-Quellcode:
var
  myString: string;
  myChar: Char;
begin
  myString:= #65^0;
  myChar:= myString[2];

  showmessage(Format('String: "%s"; Zweites Zeichen: "%s"; ASCII: %d',
    [myString, myChar, Ord(myChar)]));
end;
ändere das Zeichen hinter dem "^" und wirf einen Blick auf eine ASCII-Tabelle
gruß, choose
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#10

Re: #70^2^!^'^%#58 <- Wieso funktioniert das?

  Alt 7. Nov 2003, 14:13
Hallo Phlux hallo Daniel,

wie kann es sich um Pointer handeln, wenn
  • im Adressraum bei 0x00000000 bis 0x000000ff nur Nullen stehen,
  • das Literal schließlich zur Kompilierzeit in einen echten String inkl Adresse umgewandelt wird und
  • die Umsetzung caseInsensitiv ist (#65^a=#65^A)?
gruß, choose
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:40 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