AGB  ·  Datenschutz  ·  Impressum  







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

TStringList, Pos, PosEx usw.311

Ein Thema von PredatorMask · begonnen am 8. Jun 2011 · letzter Beitrag vom 9. Jun 2011
Antwort Antwort
Seite 2 von 4     12 34      
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#11

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 14:40
Ginge es nicht sinngemäß auch so mit einer Verwaltung der RichEdits?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  function IsSameText(const str1, str2: string): Boolean;
  begin
    Result := AnsiStrIComp(PChar(str1), PChar(Str2)) = 0;
  end;

var
  load: tstringlist;
  switch, i: integer;
  RE : Array of TRichEdit;
begin
  load := tstringlist.create;
  try
    load.loadfromfile('C:\1.txt');
    switch := 0;
    Re[0]:=RichEdit1;
    Re[1]:=RichEdit2;
    For i=0 To load.count-1 do
      begin
      If IsSameText('hallo eins:', load[i]) Then switch:=0;
      If IsSameText('hallo zwei:', load[i]) Then switch:=1;
      Re[switch].Lines.Add(load[i])
      end
  finally
    load.Free;
  end;
end;
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 14:44
Damit würdest Du aber auch alle Zeilen vor "hallo eins" ins erste RichEdit kopieren, wenn ich das richtig sehe (switch steht ja initial auf 0).
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
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#13

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 15:34
Überarbeitete Version:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  function IsSameText(const str1, str2: string): Boolean;
  begin
    Result := AnsiStrIComp(PChar(str1), PChar(Str2)) = 0;
  end;

var
  load: tstringlist;
  switch, i: integer;
  RE : Array of TRichEdit;
begin
  load := tstringlist.create;
  try
    load.loadfromfile('C:\1.txt');
    switch := -1;
    Re[0]:=RichEdit1;
    Re[1]:=RichEdit2;
    For i=0 To load.count-1 do
      begin
      If IsSameText('hallo eins:', load[i]) Then switch:=0;
      If IsSameText('hallo zwei:', load[i]) Then switch:=1;
      If switch >= 0 then Re[switch].Lines.Add(load[i])
      end
  finally
    load.Free;
  end;
end;
Aber geht das so tatsächlich, mit einem Array für Controls? Und muss ich das nicht irgendwo noch createn oder mit SetLenght dimensionieren?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 15:40
Wenn Du weißt, dass es 2 Elemente sind, dann ist ein dynamisches Array ja witzlos, Du könntest also auch bei einem statischen bleiben. Außerdem müsstest Du nach dem Befüllen des 2. RichEdits aus der Schleife springen, sonst kopierst Du die anschließenden Abschnitte ja mit ("hallo eins" kommt in dem Beispiel ja mehrfach vor).

[edit] Rein akademische Überlegung (würde ich persönlich nicht so machen):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  function IsSameText(const str1, str2: string): Boolean;
  begin
    Result := AnsiStrIComp(PChar(str1), PChar(Str2)) = 0;
  end;

var
  load: tstringlist;
  switch, i: integer;
  RE : Array[0..1] of TRichEdit;
begin
  load := tstringlist.create;
  try
    load.loadfromfile('C:\1.txt');
    switch := -1;
    Re[0]:=RichEdit1;
    Re[1]:=RichEdit2;
    For i=0 To load.count-1 do
      begin
      If IsSameText('hallo eins:', load[i]) Then inc(switch);
      If IsSameText('hallo zwei:', load[i]) Then inc(switch);
      If switch in [0..1] then Re[switch].Lines.Add(load[i])
      end
  finally
    load.Free;
  end;
end;
Ich weiß allerdings nicht, ob das wirklich so funktioniert, das müsste man mal ausprobieren. [/edit]

[edit2] Nee, würde nicht klappen, wenn die Reihenfolge in der Datei nicht stimmt. [/edit2]
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 ( 8. Jun 2011 um 15:46 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#15

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 15:44
Wenn Du weißt, dass es 2 Elemente sind, dann ist ein dynamisches Array ja witzlos, Du könntest also auch bei einem statischen bleiben.
Außerdem müsstest Du nach dem Befüllen des 2. RichEdits aus der Schleife springen, sonst kopierst Du die anschließenden Abschnitte ja mit ("hallo eins" kommt in dem Beispiel ja mehrfach vor).
Zu Punkt 1 dachte ich, das dass so leicht erweiterbar wäre, d.h. man könnte leicht mehr RichEdits für mehr Hallo sager einbauen und dann ggf. auch den Vergleich dynamisch realisieren.

Zu Punkt 2: Ich dachte das wäre so gewollt, dass immer hin und her gewechselt wird.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 15:49
Ich habe mir den Ausgangspost noch einmal genau durchgelesen und Du könntest Recht haben. Dann wäre Deine Vorgehensweise zumindest nicht falsch, wenn auch etwas umständlich . Man könnte ja auch das Array weglassen und stattdessen eine einfache RichEdit-Variable deklarieren und mit nil initialisieren. Bei Treffer dann auf das passende RichEdit switchen, weiter unten auf Assigned abfragen und schreiben.
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
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#17

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 15:57
JaJa. Am einfach arbeite ich ja noch.
Statt immer ein Array zu switchen, einfach immer das Objekt auf das die Variable zeigt switchen. Klingt einfacher.
Ralph
  Mit Zitat antworten Zitat
PredatorMask

Registriert seit: 9. Aug 2007
10 Beiträge
 
Delphi 7 Enterprise
 
#18

AW: TStringList, Pos, PosEx usw.311

  Alt 8. Jun 2011, 22:51
@Jumpy #13:

Zitat:
[Error] Unit1.pas(51): For loop control variable must be simple local variable
[Error] Unit1.pas(51): Incompatible types: 'Boolean' and 'Integer'
[Error] Unit1.pas(52): Expression expected but 'BEGIN' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Mit freundlichen Grüßen,
Nino
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TStringList, Pos, PosEx usw.311

  Alt 9. Jun 2011, 07:18
Die Fehlermeldungen verstehe ich nicht, rein syntaktisch ist der Code IMO in Ordnung. Hast Du ihn denn auch exakt kopiert? Achja, mach aber aus dem dynamischen Array lieber wieder ein statisches. Und es wäre nett, wenn Du noch aufklären könntest, was nach dem Schreiben in das 2. RichEdit passieren soll (siehe die Posts vor Deinem).
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
PredatorMask

Registriert seit: 9. Aug 2007
10 Beiträge
 
Delphi 7 Enterprise
 
#20

AW: TStringList, Pos, PosEx usw.311

  Alt 9. Jun 2011, 07:38
ja, habe alles richtig kopiert. sollte das nicht auch

For i := 0 To load.count-1 do und nich

For i=0 To load.count-1 do heissen? ich mein, ich weiss eh nich viel, aber das scheint mir logischer. genau da setzt der cursor auch an, wenn ich f9 drücke.
und wie ein statisches array aus einem dynamischen machen? ^^

und das programm soll einfach ALLES, was in 1.txt unter "hallo 1" steht (kommt mehrmals vor, hintereinander abwechselnd!), in richedit1 hineinschreiben (also schleifenmäßig) und das gleiche, nur mit "hallo 2" und richedit2
Mit freundlichen Grüßen,
Nino
  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 13:25 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