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 string -> char -> integer (https://www.delphipraxis.net/4391-string-char-integer.html)

braingrenade 27. Apr 2003 13:16


string -> char -> integer
 
Moi Leute !

hab mal wieder n'Problem :

wie kann ich den z.b. string '1001010001010010' in ein array vom typ
smallint reinkriegen so dass am Ende der array so aussieht :

intarray[0] := 1;
intarray[1] := 0;
intarray[2] := 0;
intarray[3] := 1;
.
.
.
intarray[15] := 0;

hoffe jeder hats verstanden!

Christian Seehase 27. Apr 2003 13:24

Moin Braingrenade,

einfach in einer for Schleife durch den String gehen (1 to length(StringVariable)), und dann mit StrToInt in das korrespondiernde Element des intarray eintragen.

braingrenade 27. Apr 2003 13:55

danke fürr die antwort , aber irgedwas hab ich da falsch gemacht ,
jetzt mach ichs halt mit if schleifen , das geht auch !

Christian Seehase 27. Apr 2003 14:21

Moin Braingrenade,

if Schleife :shock: :?:


Wie geht das denn?

braingrenade 27. Apr 2003 15:01

Moin !


ganz einfach:

Delphi-Quellcode:
for i := 0 to lenth(inputstring) do
begin
if inputstring[i] = '1' then intarray[i] := 1 
else intarray[i] := 0;
end;

Stanlay Hanks 27. Apr 2003 15:14

Das ist aber trotzdem noch eine For Schleife, weil das begin nach dem do steht.

Christian Seehase 27. Apr 2003 15:20

Moin Braingrenade,

ich hatte schon Schlimmeres befürchtet ;-)

Wieso klappt

Delphi-Quellcode:
for i := 0 to lenth(inputstring) do
begin
  intarray[i] := StrToInt(inputstring[i]);
end;
bei Dir nicht?

Stimmt der inhalt nicht?

Übrigens: So dürfte es auch nicht gehen, da die Indizes eines Strings bei 1 beginnen.

Es sollte also wohl besser so aussehen:

Delphi-Quellcode:
for i := 0 to lenth(inputstring)-1 do
begin
  intarray[i] := StrToInt(inputstring[i+1]);
end;

braingrenade 27. Apr 2003 15:33

Moin !

Da gabs bei mir immer nen Convert-Error
aber is ja jetzt eh egal weil die andere Methode klappt ja auch.

das mit den indizes ist bei mir anders, ich mach dass eigentlich immer mit 'ner repeat-schleife :


Delphi-Quellcode:
i:=0;
repeat
...
i := i+1;
until i := high(irgendwas)+1;
geht auch !

Christian Seehase 27. Apr 2003 15:45

Moin Braingrenade,

wie jetzt die Schleife aussieht, in der man die Elemente eines Arrays anspricht ist zweitrangig.
Wichtig ist nur, dass die Indizes, die angesprochen werden richtig sind, und bei einem Hugestring beginnen die nun einmal bei 1 und nicht bei 0.
Der Fehler wird wahrscheinlich darin liegen, dass Du einen Shortstring verwendest (z.B. deklariert mit s : string[16]), bei dem s[0] dann das Längenbyte enthält, so dass ein Zugriff auf [0] überhaupt möglich ist. Da die Länge keine ASCII Code ist, der sich mittels StrToInt umwandeln lässt, erhältst Du einen Convert Error.

braingrenade 27. Apr 2003 15:48

Moin !

Das mit den indizes passt schon , dass funtzt bei mir alles jetzt !


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 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