Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeitoptimierung bei Stringzusammensetzung (https://www.delphipraxis.net/56808-zeitoptimierung-bei-stringzusammensetzung.html)

amigage 13. Nov 2005 10:37

Re: Zeitoptimierung bei Stringzusammensetzung
 
Nachtrag:
Leider scheint die Funktion nicht ordnungsgemäß zu funktionieren.

für st := 'FC'; sollte eigentlich das kleine Zeichen ü herauskommen, ich erhalte aber stattdessen ein R!
Denn statt j = 15 und k = 12 erhalte ich dann j = 5 und k = 2;
Sind hier einfach nur die ASCII-Zahlen falsch? Oder müssen 10 weniger abgezogen werden?

Flocke 13. Nov 2005 11:46

Re: Zeitoptimierung bei Stringzusammensetzung
 
Zitat:

Zitat von amigage
Oder müssen 10 weniger abgezogen werden?

Genau! Außerdem solltest du auch noch auf Kleinbuchstaben testen (wenn >90 dann -87).

alzaimar 13. Nov 2005 17:22

Re: Zeitoptimierung bei Stringzusammensetzung
 
Delphi-Quellcode:
j := Ord (st[1]); if j>57 then j := j-65 else j:=j-48;
k := Ord (st[2]); if k>57 then k := k-65 else k:=k-48;
Ist Quatsch, statt 65 muss das 55 sein. :oops: Damit Kleinbuchstaben berücksichtigt werden (dann ist das zwar kein Hex, aber egal), würde ich mir eine Lookuptabelle basteln:
Delphi-Quellcode:
Var
  HexTable : Array [Char] Of Byte;
Begin
  For c:='A' to 'F' do HexTable [c] := Ord (c)-Ord('A') + 10;
  For c:='a' to 'f' do HexTable [c] := Ord (c)-Ord('a') + 10;
  For c:='0' to '9' do HexTable [c] := Ord (c)-Ord('0');
  ...
     st2[i] := HexTable(st[1]) shl 4 or HexTable(st[2]);
Zum shiften: linksshiften um X Stellen ist gleichbedeutend mit einer multiplikation um 2^X. Hier werden aus 2 'nibbles' (4 bit) ein 8bit werden zusammengebastelt. Ich schiebe die ersten 4 bits um 4 stellen nach links (shl 4) und packe die zweiten 4 bits in die dann freien 4 bits (or).


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Seite 2 von 2     12   

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