Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ih Will aber eine ID! - Problem mit Funktion (https://www.delphipraxis.net/3322-ih-will-aber-eine-id-problem-mit-funktion.html)

CalganX 6. Mär 2003 20:18


Ih Will aber eine ID! - Problem mit Funktion
 
Moin,
folgende Funktion:
Delphi-Quellcode:
function TMainFrm.getID: integer;
var
  aTmp: string;
  i: integer;
begin
  aTmp := getcurSyn.Name;
  for i:= length(aTmp) downto 0 do begin
    if (aTmp[i] in ['0'..'9']) then
      Break;
  end;
  i := (length(aTmp) + 1) - i;
  Result := StrToInt(copy(aTmp, length(aTmp), i));
end;
Ich weiß, ihr werdet gleich drauf losbrüllen, dass das falsch ist. Tja, und genau das will ich auch hören. ;)
Problem: ich bekomme immer nur die letzte Zahl, auch wenn die ID mehrstellig ist.
Im Klartext: der Komponentenname setzt sich zusammen aus seInsertingXX. Das XX steht für eine ID, die ein einfacher Integer ist und bis zum Ende rattert. Nun, was will meine Funktion bezwecken? Ganz einfach: ich will diese ID. Nun frage ich euch: WAT SOLL ICH DA MACHEN? Wie gesagt: bekomme immer nur die letzte der mehreren Xen.

Naja, mir ist gerade eine Idee gekommen, aber jetzt seid ihr dran... :roll:

Chris

MrSpock 6. Mär 2003 20:23

Hallo Chris,

du willst doch nicht wirklich die Schleife verlassen, wenn das aktuelle Zeichen eine 0..9 ist, oder :mrgreen: ?

Propiers mal mit:
Delphi-Quellcode:
 if Not (aTmp[i] in ['0'..'9']) then
      Break;
Außerdem sollte die Schleife nicht bis 0, sondern nur bis 1 laufen.

CalganX 6. Mär 2003 20:25

Hm... danke, dass wird es wohl sein, aber ich habe gerade auf die schnelle (ich habe min. 1 Std. mal drangessessen :wall:) hingeschrieben:
Delphi-Quellcode:
function TMainFrm.getID: integer;
var
  aTmp: string;
begin
  aTmp := getcurSyn.Name;
  Result := StrToInt( copy(aTmp, Pos('g', aTmp) + 1, length(aTmp) - Pos('g', aTmp) ) );
end;
:wall::wall::wall::wall::wall:

Chris

jbg 6. Mär 2003 20:27

Zitat:

Code:
i := (length(aTmp) + 1) - i;

Hier wirft der Compiler doch eine Warnung wegen 'i' aus. Diese solltest du unbedingt beachten wegen der Code-Optimierung. Innerhalb der Schleife ist 'i' genau definiert, aber außerhalb eben nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.

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