Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zahlen mit Vorzeichen aus dem String herausfiltern


delphisual - So 07.12.03 00:43
Titel: Zahlen mit Vorzeichen aus dem String herausfiltern
Hallo zusammen, und danke für eventuelle Hilfe!!!

Meine Procedure sollte für jeden Array-Ellement nur 1-mal ?-? oder ?+?
zulassen, doch meine Abfrage

Delphi-Quelltext
1:
2:
3:
4:
5:
 if (S[i+1]<>'+'OR (S[i+1]<>'-'then
    begin
    .
    .
    end;

die dass verhindern soll lässt die Zeichen trotzdem durch bloß warum? hat jemand eine Idee was ich falsch mache?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
procedure auslesen(S:String);
var laenge,i,Array_laenge: integer;
    myS: String;
    myArray: Array of string;
begin

laenge:=Length(Form1.Edit1.Text);
Array_laenge:=0;
for i:=0 to laenge-1 do
 begin
    if (S[i+1]='-'then
    begin
    myS:='-';
    Array_laenge:=Array_laenge+1;
    SetLength(myArray,Array_laenge);
    myArray[Array_laenge-1]:=myS;
    end;

    if (S[i+1]='+'then
    begin
    myS:='+';
    Array_laenge:=Array_laenge+1;
    SetLength(myArray,Array_laenge);
    myArray[Array_laenge-1]:=myS;
    end;

    //********** Hier liegt mein Feller, aber warum???
    if (S[i+1]<>'+'OR (S[i+1]<>'-'then
    begin
    myS:=S[i+1]; // Variable myS bekommt auch '+' oder '-' zugewiesen,
    ShowMessage(myS);  //obwohl ich das mit Abfrage verhindert haben sollte ;(
    myArray[Array_laenge-1]:=Concat(myArray[Array_laenge-1],myS);
    end;
 end;

danke schön!!!

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt


delphisual - So 07.12.03 11:10

HI All,
mein Operator ist falsch gewesen:

Quelltext
1:
2:
    if (S[i+1]<>'+') AND (S[i+1]<>'-') then 
    begin


cya All


Phantom1 - So 07.12.03 11:17

delphisual hat folgendes geschrieben:
HI All,
mein Operator ist falsch gewesen:

Quelltext
1:
2:
    if (S[i+1]<>'+') AND (S[i+1]<>'-') then 
    begin


cya All


ja genau, oder du machst es dir etwas einfacher zb.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure auslesen(S:String);
var
  myArray: Array of string;
  i: integer;
begin
  for i:=1 to Length(S) do
    if S[i] in ['-''+'then
    begin
      SetLength(myArray,Length(myArray)+1);
      myArray[High(myArray)]:=S[i];
    end else
      myArray[High(myArray)]:=myArray[High(myArray)]+S[i];
end;


delphisual - So 07.12.03 14:50

Hi Phantom,
danke für dein posting ich habe zwar mein Code um einiges reduziert deine Variante ist aber noch eleganter!
Einfach super. :!:

Mit freundlichen Grüßen
delphisual