Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme mit Ord() (https://www.delphipraxis.net/145274-probleme-mit-ord.html)

Baulli 28. Dez 2009 11:42


Probleme mit Ord()
 
Hallo,

ich habe das Problem, dass ich aus einer ini Datei einen Wert als String auslese und Ord() auf diesen String ausführen möchte, allerdings ist dies ja nicht möglich.

Kurz wie komm ich von Ord('a') auf Ord(a) ?
Mit strtoint usw hatte ich bis jetzt noch keine Erfolge!

Danke im Vorraus
Baulli

thkerkmann 28. Dez 2009 11:48

Re: Probleme mit Ord()
 
Hi,

du kannst ord() auf die einzelnen Zeichen eines Strings anwenden.

also z.B.
Delphi-Quellcode:
  ord(s[1]);
wobei der string natürlich mindestens 1 Zeichen lang sein muss.

Gruss

Baulli 28. Dez 2009 11:57

Re: Probleme mit Ord()
 
Danke,

aber das problem ist, dass ich Ord auf einen 3 Zeichen langen String anwenden muss:
Delphi-Quellcode:
RegisterHotKey(Form1.Handle, 1, 0, ord(i[1]+i[2]+i[3]));
gibt Fehlermeldung aus!

Matze 28. Dez 2009 11:59

Re: Probleme mit Ord()
 
Da Ord() ein ASCII-Zeichen in den zugehörigen Dezimalwert umwandelt, kannst du keine kompletten Strings übergeben.
Du kannst natürlich jedes Zeichen einzeln mit Ord() umwandeln und anschließend addieren o.ä.

himitsu 28. Dez 2009 12:04

Re: Probleme mit Ord()
 
das geht nicht ... Ord gibt z.B. den binären Zahlenwert eines Zeichens aus.

ein String hat mehrere Zeichen und da geht es einfach nicht.

du kannst aber mehrere Werte nachher zusammenrechnen
z.B.:
Delphi-Quellcode:
x := ord(i[1]) + ord(i[2]) + ord(i[3]);

// oder
x := ord(i[1]) + ord(i[2]) * 256 + ord(i[3]) * 65536;

// oder
x := integer(ord(i[1])) + integer(ord(i[2])) * 256 + integer(ord(i[3])) * 65536;

x := integer(ord(i[3])) * 65536 + integer(ord(i[2])) * 256 + ord(i[1]);
[edit]
ich hätte schneller schreiben sollen, aber was soll's ... ist praktisch Matzes Antwort nochmal in lang

Baulli 28. Dez 2009 12:07

Re: Probleme mit Ord()
 
Mir fällt dazu keine gescheite Lösung ein.

Ich lese aus der Ini Datei den Virtual Key Code (z.B.: $31) und diesen muss ich in die Registrierung vom Hotkey einbauen
Sprich:
Delphi-Quellcode:
RegisterHotKey(Form1.Handle, 1, 0, ord($31));
Da ich allerdings nun den KeyCode aus einer ini Datei auslese bekomme ich '$31' und kann mit diesem keinen Key registrieren.

Edit: wenn ich vorher alle Zeichen einzeln einlese und addiere kommt auch Fehlermeldung beim lesen von Adresse.

himitsu 28. Dez 2009 12:09

Re: Probleme mit Ord()
 
Das sollte doch StrToInt in einen Integer umwangeln können?
Delphi-Quellcode:
StrToInt('$31') = $31 = 49


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 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