AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Schleife - tstringlist - Einträge einfügen und löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife - tstringlist - Einträge einfügen und löschen

Ein Thema von Susanne · begonnen am 26. Okt 2006 · letzter Beitrag vom 26. Okt 2006
Antwort Antwort
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Schleife - tstringlist - Einträge einfügen und löschen

  Alt 26. Okt 2006, 10:29
Folgendes Problem

ich habe eine Stringliste mit x verschiedenen Einträgen
es gibt welche die mit @ anfangen - die sollen gelöscht werden
es gibt die Kombination @FOLDER und in der nächsten Zeile steht ^ - dies bedeutet für mich, es ist eine Seiten anfang - Zeile @FOLDER muss ich löschen
es gibt eine Zeile mit ^, - hier muss ich den String auseinanderbasteln und die 2-5 werte sollen nacheinander in 2-5 Zeilen weiter oben, wo ^ steht eingefügt werden.
die Zeile ^, soll am Ende dann natürlich auch gelöscht werden

mein Problem ist jetzt nur wie ich das in einer Schleife zusammenbasteln kann, da ich ja einfügen und löschen will. Jemand einen guten Tipp?


Hier einmal ein Beispiel:
vorher:
Delphi-Quellcode:
@x1
@x2,ANSI
@FOLDER
^

hallo 1
hallo 2
egal was hier steht, es ist die
    
.
^,^test1^,^heute^,^2^,^was auch immer^,^^,^^,^1^
nachher:
Delphi-Quellcode:
test1
heute
2
was auch immer


1

hallo 1
hallo 2
egal was hier steht, es ist die
                            
.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Schleife - tstringlist - Einträge einfügen und löschen

  Alt 26. Okt 2006, 10:43
Tipp: Zerleg dein Problem in Teilproblme (Hast du ja schon) und dann schreibst du für jedes teilproblem eine Routine, die das Teilproblem löst. Am Ende musst du das ganze nur noch zusammensetzen in der Schleife.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Schleife - tstringlist - Einträge einfügen und löschen

  Alt 26. Okt 2006, 10:48
1. Stringliste in eine temporäre Datei speichern
2. Zeile für zeile aus der Temporären Datei einlesen mit dem ASC-Wert(@) vergleichen wenn gefunden überspringen.
3. Text nach ^ scannen wenn LENGTH(^) = 1 zeile überspringen.
4. Text nach ^ scannen wenn LENGTH(^) <> 1 zeile Spliten mit Delemiter ^.

Stringliste löschen und abhängig vom Split(Array) zur Stringliste(wert von Array.Index) addieren.

gruß
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Schleife - tstringlist - Einträge einfügen und löschen

  Alt 26. Okt 2006, 12:25
Zitat von EWeiss:
1. Stringliste in eine temporäre Datei speichern
Wieso eine Datei?

@Susanne:
Die Schleife kannst du trotzdem machen. Ich würde mir eine Laufvariable anlegen und dann in einer While Schleife arbeiten. Diese untersucht die Bedingung mit jedem Durchlauf erneut und dadurch kannst du die sprachlichen Elemente Continue nutzen.

Grobes Beispiel zu der Schleifenproblematik:

Delphi-Quellcode:
Var
  lLine: Integer;
Begin
  lLine := 0;
  While ( lLine < stringlist.Count ) Do
  Begin
    If ( ZeileZuLöschen ) Then
    Begin
      stringlist.Delete(lLine);
      Continue;
    End;

    If ( ZeileEditieren ) Then
    Begin
      stringlist[lLine] := 'whatever' + stringlist[lLine];
    End
    Else If ( ZeileEinfügen ) Then // Else If, damit die vorher editierte Zeile nicht vllt. diese Bedingung erfüllt
    Begin
      stringlist.Insert(lLine, 'blubb');
      Continue; // oder Dec(lLine);
    End;

    Inc(lLine);
  End;
End;
Die einzelnen Bedingungen und Aktionen kannst du ja anhand deiner Schilderungen oben einfügen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Schleife - tstringlist - Einträge einfügen und löschen

  Alt 26. Okt 2006, 12:40
Zitat:
Wieso eine Datei?
Ja deine Variante ist schon sinnvoller!
War auch nur ein vorschlag

gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Schleife - tstringlist - Einträge einfügen und löschen

  Alt 26. Okt 2006, 13:50
Hallo Susanne,

hier mein Versuch:

Delphi-Quellcode:
uses
  StrUtils;

procedure DoProcess(Lines: TStrings);
var
  i, iLine: Integer;
  s: TStrings;
begin
  s := TStringList.Create;
  s.QuoteChar := '^';
  for iLine := Pred(Lines.Count) downto 0 do
  begin
    if AnsiStartsText('^,', Lines[iLine]) then
    begin
      s.DelimitedText := Copy(Lines[iLine], 3, MaxInt);
      Lines.Delete(iLine);
    end else
    if AnsiStartsText('^', Lines[iLine]) then
    begin
      Lines.Delete(iLine);
      for i := Pred(s.Count) downto 0 do
        Lines.Insert(iLine, s[i]);
      s.Clear; // substitute once
    end else
    if AnsiStartsText('@', Lines[iLine]) then
      Lines.Delete(iLine);
  end;
  s.Free;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:12 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