![]() |
Ord für Int64
Hallo
gibt es eine Funktion die ein 'Ord für Int64' ermöglicht bzw. eine alternative hierfür:
Delphi-Quellcode:
Für Tipps und Hinweise wie immer dankbar
function GetTC(IntStr : String) : Integer;
var I : Integer; S : Char; //PWideChar; begin Result := 0; if GetLocaleInfo(GetUserDefaultLangID, LOCALE_STHOUSAND, S, SizeOf(PWideChar)) = 0 then S := '.'; for I := 1 to Length(IntStr) do if Ord(IntStr[I]) = Ord(S) then Inc(Result); // <- geht nicht, da Int64! end; Alter Mann |
Re: Ord für Int64
Wozu denn?
Ord ist doch schon ein Integer (ordinaler Type) [edit] abgesehn davon, seh ich da nirgendwo einen Int64 :gruebel: [edit2] das sind auch beises Char, also kann man diese auch direkt vergleichen |
Re: Ord für Int64
Aua!
Zitat:
Du sagst also GetLocaleInfo, dass du einen Buffer mit einer Größe von 4 Zeichen(!) übergibst, übergibst aber nur einen von 1 bzw. 2 Byte Größe... |
Re: Ord für Int64
Peinlich :oops:
Aber wie immer, sehr Zielführend! Mache es jetzt so:
Delphi-Quellcode:
function GetTC(IntStr : String) : Integer;
var I : Integer; S : Array[0..1] of Char; begin Result := 0; if GetLocaleInfo(GetUserDefaultLangID, LOCALE_STHOUSAND, S, 2) = 0 then S[0] := '.'; for I := 1 to Length(IntStr) do if Ord(IntStr[I]) = Ord(S[0]) then Inc(Result); end; |
Re: Ord für Int64
Delphi-Quellcode:
Auch wenn der Compiler die ORDs quasi wegoptimiert ... es sind beides CHARs, also kann man diese direkt vergleichen
function GetTC(IntStr : String) : Integer;
var I : Integer; C : Array[0..1] of Char; begin Result := 0; if GetLocaleInfo(GetUserDefaultLangID, LOCALE_STHOUSAND, @C, 2) = 0 then C[0] := '.'; for I := 1 to Length(IntStr) do if IntStr[I] = C[0] then Inc(Result); end; und der Compiler bemeckert das fehlende @ nicht? (bei mir lpLCData ein PChar) |
Re: Ord für Int64
Nö, das fehlende @ wird nicht angemeckert(D2K9).
Der Code wird so ähnlich in GetLocaleChar benutzt. Gruß |
Re: Ord für Int64
stümmt ... sehr intessant :shock:
weil eigentlich will die Funktion ja einen PChar und du gibst ein Array hin |
Re: Ord für Int64
Zitat:
Delphi-Quellcode:
compiliert auch. Solange man das Array bei 0 beginnen lässt. Ansonsten meckert er rum.. Inkompatible Typen Array und String und so..
var Arr: Array[0...10] of Char;
s: String; begin s := Arr; end; |
Re: Ord für Int64
bei Array zu String baut die Compilermagic für Strings eine entsprechende Konverter-Prozedur ein, also ist es da schon OK, nur für Array nach PChar war mir da noch nichts bekannt,
anscheinend tut der Compiler das @ automatisch davor, wenn Char-Array und PChar zusammenkommen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz