AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Textinhalt aufsplitten

Ein Thema von EarthQuaker · begonnen am 15. Mär 2012 · letzter Beitrag vom 21. Mär 2012
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 10:59
Ohne Gewähr, da aus dem Kopf getippt:
Delphi-Quellcode:
procedure VerteileStrings(Quelle, Ziel1, Ziel2: TStrings);
var
  List: TStringlist;
  i: integer;
begin
  Assert(Assigned(Quelle) and Assigned(Ziel1) and Assigned(Ziel2));
  Ziel1.BeginUpdate;
  try
    Ziel1.Clear;
    Ziel2.BeginUpdate;
    try
      Ziel2.Clear;
      List := TStringlist.Create;
      List.Delimiter := ';';
      try
        for i := 0 to Quelle.Count - 1 do
          begin
            List.DelimitedText := Quelle[i];
            if List.Count > 0 then
              Ziel1.Add(List[0]);
            if List.Count > 1 then
              Ziel2.Add(List[1]);
          end;
      finally
        List.Free;
      end;
    finally
      Ziel2.EndUpdate;
    end;
  finally
    Ziel1.EndUpdate;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#12

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 11:21
Danke dir DeddyH, muss ich nur schauen ob ich es anpassen kann irgendwie. derzeit klappts noch nicht. Das nach langem echt mal wieder eine herrausforderung

Weitere tips sind willkommen hier

MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 11:32
Wie rufst Du es denn auf? Eigentlich sollte es klappen (gut, ich bin auch nicht fehlerfrei, aber so auf Anhieb kann ich nicht erkennen, was da nicht funktionieren sollte).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#14

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 11:38
Also ganz normal öffne ich eine Textdatei:

Code:
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
DateiName: TFileName;
begin
if OpenDialog1.Execute then
begin
ListBox1.Clear;
DateiName := (OpenDialog1.Filename);
ListBox1.Items.LoadFromFile(DateiName);
end;
end;
und auf klick von der Listbox bei den einträgen fügt sich das ganze in die 2 und 3 listbox ein.

Code:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
for i := 0 to ListBox1.Items.Count -1 do
begin
if ListBox1.Selected[i] then
Edit1.Text := ListBox1.Items.Strings[i];

  ListBox2.Items.Strings[0] := Copy(Edit1.Text,1, (pos(';',Edit1.Text))-1);
  ListBox3.Items.Strings[0] := Copy(Edit1.Text,pos(';',Edit1.Text)+1,length(Edit1.Text));

end;
end;

Im endefekt soll es dich jedoch schon beim offnen der datei gleich auf die listbox2 und 3 verteilen, somit spare ich mir dann die listbox1.


MfG
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#15

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 12:52
Wenn Du statt des Semicolons = als Trenner verwendest könntest Du Dir einiges sparen mit
  ValueListEditor1.Strings.LoadFromFile('C:\temp\fff.txt');
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 13:05
Delphi-Quellcode:
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
  DateiName: TFileName;
  List: TStringlist;
begin
  if OpenDialog1.Execute then
    begin
      List := TStringlist.Create;
      try
        List.LoadFromFile(OpenDialog1.Filename);
        VerteileStrings(List, ListBox2.Items, ListBox3.Items);
      finally
        List.Free;
      end;
    end;
end;
Das sollte doch auch funktionieren, ohne die Struktur der Datei ändern zu müssen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#17

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 13:16
@ Bummi:
Auch dir danke ich werde es mir auch mal mit anschauen. Aber die struktur wollte ich im moment erstmal beibehalten.


Danke DeddyH!

Klappt wunderbar, ... aber leider schneidet er alles nach einem Leerzeichen ab siehe Screenshot.


MfG
Miniaturansicht angehängter Grafiken
unbenannt2.png  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 13:18
Das Problem ist bekannt. In neueren Delphi-Versionen gibt es dafür StrictDelimiter, in Delphi 7 leider noch nicht. Da muss man sich dann mit schmutzigen Tricks behelfen.

[edit] Geänderte Version, wieder ungetestet:
Delphi-Quellcode:
procedure VerteileStrings(Quelle, Ziel1, Ziel2: TStrings);
var
  List: TStringlist;
  i: integer;
begin
  Assert(Assigned(Quelle) and Assigned(Ziel1) and Assigned(Ziel2));
  Ziel1.BeginUpdate;
  try
    Ziel1.Clear;
    Ziel2.BeginUpdate;
    try
      Ziel2.Clear;
      List := TStringlist.Create;
      List.Delimiter := ';';
      try
        for i := 0 to Quelle.Count - 1 do
          begin
            List.DelimitedText := StringReplace(Quelle[i], ' ', #255, [rfReplaceAll]);
            if List.Count > 0 then
              Ziel1.Add(StringReplace(List[0], #255, ' ', [rfReplaceAll]));
            if List.Count > 1 then
              Ziel2.Add(StringReplace(List[1], #255, ' ', [rfReplaceAll]));
          end;
      finally
        List.Free;
      end;
    finally
      Ziel2.EndUpdate;
    end;
  finally
    Ziel1.EndUpdate;
  end;
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (16. Mär 2012 um 13:21 Uhr)
  Mit Zitat antworten Zitat
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#19

AW: Textinhalt aufsplitten

  Alt 16. Mär 2012, 13:27
Na das ist doch mal perfekt... VIELEN Herzlichen DANK auch. So funktioniert die Splittung perfekt und sogar Kommas werden mit angezeigt


MfG



PS. Damit kann ich nun wieder weiterarbeiten und dementsprechend texte ändern und dann von der 3 listbox mit kommas abspeichern
  Mit Zitat antworten Zitat
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#20

AW: Textinhalt aufsplitten

  Alt 20. Mär 2012, 11:50
Hey Ihr helfer, brauche nochma eure hilfe

soweit hat ja nun alles geklappt... nun meine frage am rande... wie speichere ich wenn ich änderungen durchführe eigentlich wieder in die datei hinnein?

MfG
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 07:44 Uhr.
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