AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Stringmanipulation

Ein Thema von violinenspieler1000 · begonnen am 2. Jul 2008 · letzter Beitrag vom 2. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2   
violinenspieler1000

Registriert seit: 22. Apr 2008
15 Beiträge
 
#1

Stringmanipulation

  Alt 2. Jul 2008, 13:12
Hallo,

ich habe einen String nach dem Muster:
'xzahl1xzahl2xzahl3x' usw.

Ich möchte alle Zahlen in ein Array speichern und nur die Zahlen, die 'x' sollen verschwinden.

Welche Funktion bietet sich dafür an?

Danke,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Stringmanipulation

  Alt 2. Jul 2008, 13:16
Hallo,

in der CodeLibrary findest du eine Funktion namens Hier im Forum suchenExplode.
http://www.delphipraxis.net/internal...ect.php?t=3816

die sollte genau das tun, was du brauchst

Trennzeichen wäre in deinem Fall eben das "x".
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Stringmanipulation

  Alt 2. Jul 2008, 13:16
Hallo,

schau dir mal ExplodeExplode an. Da kannst du ein Trennzeichen angeben, bei denen der String aufgeteilt wird (hier: x). Die Teilstrings landen dann jeweils in einem Array-Eintrag.

Grüße

Edit: Da war einer schneller.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Stringmanipulation

  Alt 2. Jul 2008, 13:32
Man kann auch mit einer TStringList arbeiten.
Dort gibt es "DelimitedText" und "Delimiter".

Einfach mal hier suchen mit Suchbegriffen "Delimiter" oder "DelimitedText" oder "TStringList".
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
violinenspieler1000

Registriert seit: 22. Apr 2008
15 Beiträge
 
#5

Re: Stringmanipulation

  Alt 2. Jul 2008, 13:43
Ok, danke für die Hilfe.
Ich habe aber immer noch einen Fehler im Programm und finde den nicht.

Mein Code sieht so aus. In Datei ist der string mit den Trennzeichen gespeichert und fotonummer ist ein integer arraay, in dem die einzelnen zahlen dann stehen sollen.
Wo ist nur der Fehler?


procedure TForm1.Umspeichern(Datei: string);
var
i, zahl: integer;
begin
Explode( 'x', Datei, 0);

for i:=1 to length(ergeb) do begin

try
fotonummer[i] := strtoint(ergeb[i]);
except
end;

end;

for i:=1 to length(fotonummer) do begin
showmessage(inttostr(fotonummer[i]));
end

end;
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: Stringmanipulation

  Alt 2. Jul 2008, 13:45
Hallo,

Explode ist eine Funktion, keine Prozedur. Im Moment weist du das Ergebnis deines Funktionsaufrufs nirgends zu

Soll vermutlich heißen: ergeb := Explode(...)
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Stringmanipulation

  Alt 2. Jul 2008, 13:58
Zitat von violinenspieler1000:
Mein Code sieht so aus.
Beim erstellen oder bearbeuten eines Beitrags gibt es ziemlich oben in der Mitte einen Knopf "Delphi-Code".
Knopf drücken, Code eintippen oder einkopieren, Knopf wieder drücken.
Dann wird der Code richtig schön dargestellt.

z.B. so:
Delphi-Quellcode:
procedure TFoMain.AcBeendenExecute(Sender: TObject);
begin
  Self.Close;
end;
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
violinenspieler1000

Registriert seit: 22. Apr 2008
15 Beiträge
 
#8

Re: Stringmanipulation

  Alt 2. Jul 2008, 14:07
Oh, entschuldigung, das habe ich vergessen zu sagen:

Ich habe aus Explode eine Prozedur gemacht und das Ergebnis in einem array ergeb gespeichert:


Es sieht ungefähr so aus.

Code:

procedure TForm1.Explode(const Separator, S: string; Limit: Integer = 0);
var
  SepLen: Integer;
  F, P: PChar;
  ALen, Index: Integer;
begin
  SetLength(ergeb, 0);
  if (S = '') or (Limit < 0) then Exit;
  if Separator = '' then
  begin
    SetLength(ergeb, 1);
    ergeb[0] := S;
    Exit;
  end;
  SepLen := Length(Separator);
  ALen := Limit;
  SetLength(ergeb, ALen);

  Index := 0;
  P := PChar(S);
  while P^ <> #0 do
  begin
    F := P;
    P := AnsiStrPos(P, PChar(Separator));
    if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F);
    if Index >= ALen then
    begin
      Inc(ALen, 5);
      SetLength(ergeb, ALen);
    end;
    SetString(ergeb[Index], F, P - F);
    Inc(Index);
    if P^ <> #0 then Inc(P, SepLen);
  end;
  if Index < ALen then SetLength(ergeb, Index);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: Stringmanipulation

  Alt 2. Jul 2008, 14:10
Naja, der zweite Fehler liegt hier:
for i:=1 to length(ergeb) do begin Sollte heißen:
for i:=0 to length(ergeb) - 1 do begin Dynamische Arrays beginnen bei 0, nicht bei 1

Abgesehen davon sehe ich wenig Sinn darin, aus Explode eine Prozedur zu machen Dann müsstest du s jedenfalls als var-Parameter übergeben, sonst wird das nix! - Käse, s soll ja garnicht verändert werden

Mann - benutz das doch einfach als Funktion...
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Stringmanipulation

  Alt 2. Jul 2008, 14:10
Zitat von violinenspieler1000:
Oh, entschuldigung, das habe ich vergessen zu sagen:

Ich habe aus Explode eine Prozedur gemacht und das Ergebnis in einem array ergeb gespeichert:
Ich seh die Deklaration des arrays nicht.
Ist das vielleicht eine globale Variable?
Böse!

Warum muss man eigentlich Dinge (Funktionen), die funktionieren immer wieder "vermurksen"?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf