Entwickler-Ecke

Sonstiges (Delphi) - Strings zerlgen und in ein Array packen


Landy - So 31.10.04 13:24
Titel: Strings zerlgen und in ein Array packen
Okok, nach 2-jähriger Pause bin ich zwecks Studium wieder mit der Delphi-Programmierung angefangen und habe bzw. hatte folgendes Problem:

+ Mein Programm soll einen String in Form von '01b2b84a...' einlesen! //kein Problem

+ Dieser String muss nun zur weiteren Bearbeitung in arrays abgespeichert werden. Mein Problem hierbei war, dass sich ein auftauchender Buchstabe im String immer auf die vorhergehende Ziffer bezieht und zusammen in einem Array abgespeichert werden muss, während eine einzelne Ziffer allein in einem Array gespeichert wird. (array[1]=0; array[2]=1b; array[3]=8; array[4]=4a ...)!

Nochmals vielen Dank für die Lösung und 'tschuldi wegen dem Löschen!!!


Landy


Luzzifus - So 31.10.04 13:38


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:
var
  array1: Array of String;  // <-- da kommen die statements rein
  boeser_string: String// <-- das sei der string mit '01a67a07b84b4a1a1b...'

procedure boesen_string_zersaegen;
var
  i: Integer;
  S: String;
begin
  SetLength(array1, 0);
  for i:=1 to length(boeser_string) do
  begin 
    if boeser_string[i] in ['0'..'9'then
    begin
      SetLength(array1, Length(array1)+1);
      array1[Length(array1)-1]:=boeser_string[i];
    end
    else begin
      S:=array1[Length(array1)-1];
      S:=S+boeser_string[i];
      array1[Length(array1)-1]:=S;
    end;
  end;
end;


ist aber nicht getestet..


JayEff - So 31.10.04 13:56

ähm... was genau bedeutet eigentlich das

Delphi-Quelltext
1:
2:
    if boeser_string[i] in ['0'..'9'then   
    begin

"IN"??? wie funktioniert das?

Quelltext
1:
2:
3:
4:
 _
|  DANKE ^^
|
v


Luzzifus - So 31.10.04 14:01

das bedeutet dass das zeichen boeser_string[i] zwischen '0' und '9' liegen muss (inklusive der grenzen).

ist das gleiche wie:

Delphi-Quelltext
1:
if (ORD(boeser_string[i])>47and (ORD(boeser_string[i])<58then                    

das ist aber optisch nicht so der kracher, finde ich.. :D


Benutzername - So 31.10.04 16:46

@Landy: Könntest du bitte wieder die Frage in den Anfangspost schreiben? :roll: So weiß kein Mensch, was du für ein Problem hattest. :wink:


Luzzifus - So 31.10.04 16:49

Er wollte einen String ala '12a2b345a5b5c678a8b' in die Einzelstatements '1', '2a', '2b', '3', '4', '5a' etc. zerlegen und diese in ein Array schreiben.


Benutzername - So 31.10.04 17:22

Ach so, danke :-)


Christian S. - So 31.10.04 17:29

@Landy: Was soll das, die Frage aus dem Posting zu löschen? Jetzt weiß niemand mehr, was überhaupt Thema dieses Threads war!

Hier noch die Richtlinien dazu:
Richtlinien hat folgendes geschrieben:
4.1 Ändern eines Postings
Anstatt einen Nachtrag zu einem von Dir getätigten Posting in einem weiteren Beitrag unter Deinem vorhergehenden zu posten, ist es meist vorzuziehen, den ersten Beitrag dementsprechenden abzuändern. Benutze dazu bitte die Editier-Funktion in der Menüleiste. Allerdings ist es unerwünscht und somit untersagt, die eigenen Beiträge durch die Editierfunktion zu leeren, da somit der gesamte Thread sinnentfremdet wird!


MartinPb - So 31.10.04 17:33

In solchen Fällen am besten den ganzen Thread löschen.


Christian S. - So 31.10.04 17:45

MartinPb hat folgendes geschrieben:
In solchen Fällen am besten den ganzen Thread löschen.
Ich warte erst einmal. Vielleicht trägt Landy die Frage ja wieder ein, dann wäre der Thread "gerettet". Ansonsten wird er wohl wirklich gelöscht.


Luzzifus - So 31.10.04 17:47

na oder alternativ meine erklärung mit nem hinweis in seinen ersten post reineditieren. :)