Avatar billede skovjuul Nybegynder
22. maj 2007 - 03:02 Der er 3 kommentarer og
2 løsninger

Oversættelse af c++ kode til delphi

Hola

Her er 2 funktioner som jeg bruger i min c++ kode. Er der en der gider oversætte det til delphi da jeg stadig ikke er helt inde i den lidt mere avancerede del endnu:

//---------------------------------------------------------------------------
string ToHex(const string& aIn)
{
  stringstream Out;
  string::size_type idx;
  for(idx = 0; idx < aIn.size(); idx++)
      Out << hex << std::setw(2) << setfill(' ') << int(aIn[idx]);

  return Out.str();
}
//---------------------------------------------------------------------------
string FromHex(const string& aIn)
{
  string Out;
  string Temp = aIn;
  string ffStr = "ff";
  while(!Temp.empty())
  {
      if(Temp.substr(0, 2).c_str() != ffStr){ //Hack
        Out += (char )strtol(Temp.substr(0, 2).c_str(), 0, 16);
        Temp = Temp.substr(2);
      }
      else
        Temp = Temp.substr(2);
  }
  return Out;
}

På forhånd tak for hjælpen
Jesper
Avatar billede arne_v Ekspert
22. maj 2007 - 04:01 #1
Det kan gøres på mange måder.

Her er en:

function ToHex(s : String) : String;
var
  res : String;
  i : Integer;
begin
  res := '';
  for i := 1 to Length(s) do begin
    res := res + IntToHex(Ord(s[i]), 2);
  end;
  ToHex := res;
end;

function FromHex(s : String) : String;
var
  res : String;
  i : Integer;
begin
  res := '';
  for i := 1 to (Length(s) div 2) do begin
    res := res + Chr(StrToInt('$' + Copy(s,2*i-1,2)));
  end;
  FromHex := res;
end;
Avatar billede tauron Nybegynder
22. maj 2007 - 07:30 #2
Man behøver ikke at opfinde den dybe tallerken en gang til.
Delphi har et hav af små rutiner som f.eks:

StrToIntDef Routine

Converts a string that represents an integer (decimal or hex notation) to a number with error default.

Unit
SysUtils

Syntax


[Delphi] function StrToIntDef(const S: string, Default: Integer): Integer;


Description
StrToIntDef converts the string S, which represents an integer-type number in either decimal or hexadecimal notation, into a number. If S does not represent a valid number, StrToIntDef returns Default.

Related Information
IntToHex
IntToStr
StrToInt
TryStrToInt

eller
IntToHex Routine

Returns the hex representation of an integer.

Unit
SysUtils

Syntax


[Delphi] function IntToHex(Value: Integer, Digits: Integer): string;



[Delphi] function IntToHex(Value: Int64, Digits: Integer): string;


Description
IntToHex converts a number into a string containing the number's hexadecimal (base 16) representation. Value is the number to convert. Digits indicates the minimum number of hexadecimal digits to return.

Related Information
IntToStr


I arnes udgaver kan man i øvrigt forenkle lidt ved brug af den indbyggede variabel result som er den returnerede værdi af en function:

function ToHex(s : String) : String;
var
  i : Integer;
begin
  result := '';
  for i := 1 to Length(s) do begin
    result := result + IntToHex(Ord(s[i]), 2);
  end;
end;
Avatar billede skovjuul Nybegynder
22. maj 2007 - 10:47 #3
Mange tak begge to... det ser fint ud.
Smid et svar så er der 50 til hver.

Hilsen
Jesper
Avatar billede arne_v Ekspert
22. maj 2007 - 15:40 #4
svar
Avatar billede tauron Nybegynder
22. maj 2007 - 20:18 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester