Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
Delphi 2007 Professional
|
RightStr, LeftStr nicht gefunden???
21. Jun 2006, 16:06
In folgendem Source benötige ich den Befehl RightStr und leftStr leider kennt die mein D3 so nicht muss ich noch irgentwas in die Uses einbinden oder kann man diese function irgentwie nachmachen?
Delphi-Quellcode:
function potenziren(FWert: integer): integer;
var i: integer;
begin
if FWert = 0 then result := 1 else result := 2; // 2^0 = 1
for i := 1 to FWert - 1 do result := result * 2; // 2^x = 2*2*2*...
end;
function FBinToDec(FWert: String): String;
var i, ZwErg: integer;
begin
ZwErg := 0; //Hier werden nach und nach die Ziffern Binär eingelesen
for i := 1 to Length(FWert) do //Und entsprechend Potenziert
ZwErg := ZwErg + strtoint(FWert[i]) * potenziren(Length(FWert)-i); //Also 110 wäre (1* 2^2) + (1* 2^1) + (0* 2^0)
Result := inttostr(ZwErg);
end;
function FBinToHex(FWert: String): String;
var ZwErgStr: String;
ZwErgInt: Double;
arrIndex: Integer;
const arrHex: array[0..15] of Char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
begin // Ich erläuter das am besten gleich an nem Beispiel ;) Wir haben die BinZahl 1100111110
while Length(FWert) > 0 do // Zuerst schauen wir ob überhaupt noch was im String steht, da wir abgearbeitete Ziffern 'rausschneiden'
if Length(FWert) > 4 then // Wenn über 4 Ziffern vorhanden sind machen wir folgendes:
begin
ZwErgInt := strtoint(FBinToDec(RightStr(FWert,4))); // Wir Rechnen die hintersten 4 Ziffern (also 1110 im bsp) ab und lassen sie in Dezimal umschreiben ( also 14)
FWert := LeftStr(FWert,Length(FWert)-4); // Jetzt schneiden wir die 4 Ziffern von FWert ab, da wir die ja schon verarbeitet haben
Result := arrHex[Trunc(ZwErgInt)] + Result; // Nun schauen wir in unserem Array (siehe functions-konstante) nach, was an stelle bsp.: 14 steht: ein E
end // Damit haben wir unsere Letzte Ziffer ausgerechnet. Das machen wir nun solange bis wir < 4 Zeichen in FWert haben.
else // Wenn wir damit fertig sind steht also im ergebnis schonmal 3E und im string noch '11'
begin
ZwErgInt := strtoint(FBinToDec(FWert)); // Hier pasiert nun eigentlich das gleiche, nur dass wir
FWert := ''; // Nun den String leeren können und
Result := arrHex[Trunc(ZwErgInt)] + Result; // Nicht 4 Stellen sondern halt nur den Rest umwanden...
end // Wir erhalten im beispiel also die letzte stelle (11bin = 3h)
end;
Mfg
Tobi
Tobias It's not a bug, it's a feature.
|
|
Zitat
|