Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Strings trennen (https://www.delphipraxis.net/81554-strings-trennen.html)

capo 29. Nov 2006 11:44


Strings trennen
 
Hallo,
ich habe folgende Zeichenfolge in einem Memo stehen:
0141-1234561 -9239872
usw. ca 8000 verschiedene Zeilen

Wie kann ich den Mittelteil herauslöschen das es so aussieht.
0141-9239872
gruss vom capo

Klaus01 29. Nov 2006 11:46

Re: Strings trennen
 
Da kannst Du mit copy/delete und pos arbeiten.
Die Hilfe und viele Beispiele im Forum sollten
Dir da weiterhelfen.

Grüße
Klaus

capo 29. Nov 2006 11:52

Re: Strings trennen
 
Hallo Klaus,
danke für deine Antwort, hab auch das hier gefunden:
http://www.delphipraxis.net/internal...939&highlight=
kann ich das auch dafür nehmen?
gruss capo

Andidreas 29. Nov 2006 11:53

Re: Strings trennen
 
hab das grad mal so in paar min hingekrizelt...
habs aber net getestet...
vielleicht gehts ja so (oder so ähnlich)

Delphi-Quellcode:
procedure TMain_Form.Strindurchsuchen ();

var
sRow, sRowNew : String;
i, ilen, ipos : Integer;

begin

  ilen := Length(sRow);
 
  For i := 1 To iLen Do
  Begin
    If sRow[i] = '-' Then
    Begin
      sRowNew := Copy(sRow, 1, (iLen - i)
      sRowNew := sRowNew + Copy(sRow, i, iLen);
    End;
  End;

End;

oldmax 29. Nov 2006 12:13

Re: Strings trennen
 
Hi
Ein Vorschlag, der vielleicht etwas ungeschickt aussieht, dafür dir aber für solche Fälle immer eine Lösung bildet.

Delphi-Quellcode:
Funktion TMyForm1.GetTextElement(ElementNr: Integer; MeinTrennzeichen, MeinText: String): String;
Var RefStr    : String;
    Ausg      : String;
    ende      : Integer;
    i         : Integer;
begin
  Ausg:='';
  For i:= 1 To ElementNr do
  begin
    Ende:=Pos(MeinTrennzeichen,meinText);
    if Ende>0 then
    begin
      if i=ElementNr then Ausg:=Copy(RefStr,1,Ende-1)
      else RefStr:=Copy(RefStr,Ende+1,Length(RefStr)-Ende);
    end else if i=ElementNr then Ausg:=RefStr;
  end;
  Result:=Ausg;
end;
der Aufruf erfolgt dann für deinen Zweck

Delphi-Quellcode:
NeuStringwert:=GetTextElement(1,'-',AltString)+'-'+GetTextElement(3,'-',AltString);
oder auch, so wirds vielleicht deutlich

Delphi-Quellcode:
NeuStringwert:=GetTextElement(1,'-','123-4567-890')+'-'+GetTextElement(3,'-','123-4567-890');
sollte ergeben '123-890'
Viel Spass
Gruß oldmax

r2c2 29. Nov 2006 13:08

Re: Strings trennen
 
Um noch n Tutorial hinterher zu werfen: http://r2c2.weingut-rehn.de/content3...mit_Delphi.htm

mfg

Christian

Ines 29. Nov 2006 13:16

Re: Strings trennen
 
Hallo capo,

hat Deine Zeichenfolge immer diesen Aufbau?
Dann könntest Du folgendes ausprobieren:
Delphi-Quellcode:
var
  NewString : string;
  i        : Integer;
begin
  for i := 0 to Memo1.Lines.Count - 1 do
  begin
    NewString := LeftStr(Memo1.Lines[i],4) + RightStr(Memo1.Lines[i],7);
    Memo1.Lines[i] := NewString;
  end;
end;
Funktioniert aber nur, denn die Zeichenfolge immer gleich lang und die Trennzeichen an der gleichen Position sind.

Grüße
Ines

capo 29. Nov 2006 16:05

Re: Strings trennen
 
Danke an alle.

Hallo oldmax
ich krieg immer nur ein - zu sehen, bestimmt mache ich was falsch.


Hallo r2c2
danke für die Klasse-Seite muss ich mir alles noch genau ansehen.

Hallo Ines
Leider sind die unterschiedlich lang.
Oder was meintest du mit immer gleichem Aufbau?
Was ist LeftStr und RightStr wie muss ich die definieren?


gruss capo

angos 29. Nov 2006 16:41

Re: Strings trennen
 
Grüße,


ne du machst keinen Fehler, in der Funktion wurde lediglich eine Kleinigkeit vergessen. Hab ich mal schnell korrigiert:

Delphi-Quellcode:
function TForm1.GetTextElement(ElementNo: Integer; Seperator,
  Text: String): String;
var
  elementEnd, i: Integer;
begin
  for i := 1 to ElementNo do
  begin
    elementEnd := pos(Seperator, Text);
    if elementEnd > 0 then
    begin
      if i = ElementNo then
        Result := Copy(Text, 1, elementEnd - 1)
      else
        Text := Copy(Text, elementEnd + 1, Length(Text) - elementEnd);
    end
    else if i = ElementNo then
      Result := Text;
  end;
end;
EDIT: Man kann natürlcih auch auf RefStr komplett verzichten und dafür direkt auf MeinText zugreifen ;)

EDIT2: Funktion klein gemacht und COde-formatierung vorgenommen ;)

capo 29. Nov 2006 19:44

Re: Strings trennen
 
Hallo angos
wie muss ich das mit dem memo machen?

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  NeuStringwert, AltString: string;
  i: Integer;
begin
  for i := 0 to Memo1.Lines.Count - 1 do
    NeuStringwert := GetTextElement(1, '-', '???') + '-' + GetTextElement(3, '-', '???');
  Showmessage(NeuStringwert);
end;
Irgendwie verstehe ich nicht wo ich dann die Zahlen angeben soll.
gruss capo


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