Avatar billede dilling-hansen Nybegynder
12. juli 2004 - 14:51 Der er 9 kommentarer og
2 løsninger

Integer: Skrevet bagfra?

Hej
Jeg skal bruge en Integer variabel skrevet bagfra, jeg tror jeg har læst hele Delphis hjælp igennem, men jeg kunne ike rigtig finde noget jeg ku bruge. er der nogen der kan hjælpe???
det tal der skal skrives bagfra ligger i en Integer Variable "Tal1", og Tal1 bagfra skal gemmes i Variablen "Back".
Avatar billede borrisholt Novice
12. juli 2004 - 14:55 #1
Altså du ønsker 1234 konvereret til 4321 ?

Så skal du bare konvetere det til en streng og så vende den om og så konvetere den tilbage til en integer.

Jens B
Avatar billede dilling-hansen Nybegynder
12. juli 2004 - 14:56 #2
ja. hvordan vender man den så om?
Avatar billede pellelil Nybegynder
12. juli 2004 - 14:59 #3
Det er nemt, du holder blot et spejl op mod skærmen <G>
Avatar billede dilling-hansen Nybegynder
12. juli 2004 - 15:00 #4
ja og så scanner man vel billedet ind og prøver at sammenligne dem, eller hvad??? ;-)
Avatar billede borrisholt Novice
12. juli 2004 - 15:03 #5
uses
  StrUtils;

function ReverseInteger(const i : Integer) : Integer;
begin
  Result := StrToInt(ReverseString(IntToStr(i)));
end;

Frit fra leveren
Avatar billede arne_v Ekspert
12. juli 2004 - 15:03 #6
Du laver en for løkke fra 0 til ((længden div 2) - 1) hvor du bytter
om på index og (længde-index)
Avatar billede snowball Novice
12. juli 2004 - 15:03 #7
Humor er her nok af ;)

function ReverseString(const s: string): string;
var
  i, len: Integer;
begin
  len := Length(s);
  SetLength(Result, len);
  for i := len downto 1 do
  begin
    Result[len - i + 1] := s[i];
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Tal1,Back: Integer;
begin
  Tal1 := 1234;
  Back := StrToInt(ReverseString(IntToStr(Tal1)));
  ShowMessage(IntToStr(Back));
end;
Avatar billede Slettet bruger
12. juli 2004 - 15:05 #8
Du kan også vende tallene bytevis:

// Turning a smallint (16 bit signed)
function i16( i : smallint ) : smallint;
var
  x1 : smallint;
  x2 : array[0..1] of byte absolute x1;
  x3 : array[0..1] of byte absolute i;
begin
  x2[0]  := x3[1];
  x2[1]  := x3[0];
  result := x1;
end;

// Turning a word (16 bit unsigned)
function r16( i : word) : word;
var
  x1 : word;
  x2 : array[0..1] of byte absolute x1;
  x3 : array[0..1] of byte absolute i;
begin
  x2[0]  := x3[1];
  x2[1]  := x3[0];
  result := x1;
end;

// Turning a longint (32 bit signed)
function r32( i : longint) : longint;
var
  x1  : longint;
  x2  : array[1..4] of byte absolute x1;
  x3  : array[1..4] of byte absolute i;
begin
  x2[1] := x3[4];
  x2[2] := x3[3];
  x2[3] := x3[2];
  x2[4] := x3[1];
  result := x1;
end;
Avatar billede dilling-hansen Nybegynder
12. juli 2004 - 15:14 #9
puha svarende bliver mere og mere avanceret ;-) er ikke helt stærk til Delphi :) endnu..
tak for svarende
Avatar billede pellelil Nybegynder
12. juli 2004 - 15:37 #10
Damn jeg skulle da have skrevet mit forslag som et svar, nåh men jeg får nok nogle point en anden gang !?
Avatar billede arne_v Ekspert
16. juli 2004 - 21:05 #11
Jeg kom lige til at tænke på dette spørgsmål igen.

Hvis det er Integer->Integer man vil så er følgende noget
hurtigere end at køre via string:

function MyReverseInteger(const v : Integer) : Integer;

var
  tmp : Integer;

begin
  tmp := v;
  result := 0;
  while (tmp > 0) do begin
      result := 10 * result + (tmp mod 10);
      tmp := tmp div 10;
  end;
end;
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