Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Integer aus String mit anderen Zeichen herraussuchen (https://www.delphipraxis.net/48592-integer-aus-string-mit-anderen-zeichen-herraussuchen.html)

-NIP- 27. Jun 2005 20:37


Integer aus String mit anderen Zeichen herraussuchen
 
Hi!

Das ist warscheinlich eine Noobfrage, aber wie kann ich aus einem Edit eine Integer-Zahl auslesen, wenn dort noch andere Zeichen drin sind wie z.B. "%". Am besten fällt dan gleich ein etwaig vorhandenes Komma weg.
Also, euer Wissen ist gefragt. :D

BenjaminH 27. Jun 2005 20:43

Re: Integer aus String mit anderen Zeichen herraussuchen
 
Delphi-Quellcode:
Var PosN:Integer;
    s:String;
Begin
  PosN:=Length(s);
  for i:=0 to 9 do
  Begin
    If Pos(InttoStr(i),s)<PosN Then
      PosN:=Pos(InttoStr(i),s);
  End;
End;
Ungetestet! Geht nur solange keine anderen Zahlen auftauchen, und das ende der Zahl wird auch nicht bestimmt, dazu musst du das aber nur rumdrehen und vom ende an suchen...

Nikolas 27. Jun 2005 20:44

Re: Integer aus String mit anderen Zeichen herraussuchen
 
Geh doch den String durch und schmeiss alles ausser den Zahlen raus.

Delphi-Quellcode:
k: char;
str: string;
begin
str:='666';
k:= str[1];
if (k in ['0'..'9']) then showmessage('drin');

SirThornberry 27. Jun 2005 20:45

Re: Integer aus String mit anderen Zeichen herraussuchen
 
du könntest alle zeischen des Edits durchgehen und wenn eine zahl gefunden wird merkst du dir diesen teil. Also in etwa so:
Delphi-Quellcode:
var LNumber: String;
    LCount: Integer;
    LByte: Byte;
begin
  LNumber := '';
  for LCount := 1 to Length(Edit1.Text) do
  begin
    LByte := Byte(Edit1.Text[LCount]);
    if (LByte in [48..57]) then
      LNumber := LNumber + Char(LByte);
  end;
  if LNumber = '' then
    ShowMessage('Keine Zahl da')
  else
    ShowMessage(LNumber); //um das ganze als Integer zu erhalten: StrToInt(LNumber)

toms 27. Jun 2005 23:20

Re: Integer aus String mit anderen Zeichen herraussuchen
 
Delphi-Quellcode:
type
  TCharSet = set of Char;

function StripNonConforming(const S: string;
  const ValidChars: TCharSet): string;
var
  DestI: Integer;
  SourceI: Integer;
begin
  SetLength(Result, Length(S));
  DestI := 0;
  for SourceI := 1 to Length(S) do
    if S[SourceI] in ValidChars then
    begin
      Inc(DestI);
      Result[DestI] := S[SourceI]
    end;
  SetLength(Result, DestI)
end;

function StripNonNumeric(const S: string): string;
begin
  Result := StripNonConforming(S, ['0'..'9'])
end;

-NIP- 30. Jun 2005 19:19

Re: Integer aus String mit anderen Zeichen herraussuchen
 
Wenn man einfach nur die Zahlen rausnimmt, dann würde er auch Zahlen zusammentun, die garnicht hinternanderstehen, z.B.: "12%3".
Ich muss da sichergehen, weil es sich ja auch um den DAU handeln könnte :D.

SirThornberry 30. Jun 2005 21:35

Re: Integer aus String mit anderen Zeichen herraussuchen
 
was soll denn passieren wenn jemand "12%3" eingibt?

CLRS530 1. Jul 2005 16:01

Re: Integer aus String mit anderen Zeichen herraussuchen
 
Delphi-Quellcode:
Function ZahlAusString(ZahlString : String) : String;
var
  TempString : String;
  i, dummy : Integer;
begin
  i := 1;
  TempString := '';
  While i <= Length(ZahlString) do
  begin
    if TryStrToInt(Copy(ZahlString, i, 1), dummy) then //Testet ob der Wert eine Integer- Zahl
      TempString := TempString + Copy(ZahlString, i, 1);
    inc(i)
  end;
  ZahlAusString := TempString
end;
So ich hoffe, ich habe verstanden was du möchtest und das das eine gute Antwort für dich ist.

SirThornberry 1. Jul 2005 16:07

Re: Integer aus String mit anderen Zeichen herraussuchen
 
@CLRS530: Deine funktion macht das gleiche wie meine Auch schon, nur das ich nicht per TryStrToInt auf zahl prüfen sondern den Ascii-Code prüfe. Und anstelle von copy greife ich direkt mit "[]" auf die Zeischen zu was auch bedeutend schneller ist als erst copy zu verwenden. Letztendlich schien dies aber nicht das zu sein was der Threadsteller wollte...

CLRS530 1. Jul 2005 16:32

Re: Integer aus String mit anderen Zeichen herraussuchen
 
Ji, das ist richtig, deine macht das gleiche, aber ich dneke mal, das meine vielleicht ein wenig lesbarer ist.
Das, das direkte zugreifen, so furchtbar viel schneller ist, wage ich mal zu verneinen und überhaupt ist das in diesem Fall total nebensächlich, da es hier nicht auf speed ankommt.
Da würde ich in jedem Fall Copy benutzen.


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

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz