AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Loadfile.. scan for block.. add to TStringlist
Thema durchsuchen
Ansicht
Themen-Optionen

Loadfile.. scan for block.. add to TStringlist

Ein Thema von Skyruner2 · begonnen am 3. Nov 2003 · letzter Beitrag vom 5. Nov 2003
Antwort Antwort
Skyruner2

Registriert seit: 26. Okt 2003
93 Beiträge
 
Delphi 7 Professional
 
#1

Loadfile.. scan for block.. add to TStringlist

  Alt 3. Nov 2003, 21:09
ok es wird ein file geladen mit TXT inhalt.
der gesamte text des files wird in eine TStringList hinzugeführt, und dann wird nach einem block gesucht.
also:
Delphi-Quellcode:
var
  filedata, datacontent : tStringlist;
  databegin, dataend :integer;
begin
If openDialog1.Files = nil
then showmessage('no file loaded dumbass')
else
  begin
  filedata.Create;
  filedata.AddStrings(opendialog1.Files);
  databegin:=filedata.IndexOf(edit1.Text)+1;
  dataend:=filedata.IndexOf(edit2.Text)-1;
das file:

Code:
bla bla bla haha jajaj..
nööö dummer text.. bla bla bla
:::Begin:::
uhhh ja..
dass ist interesant
dass will ich haben
:::End:::
noch
mehr
text
edit1.text = :::Begin:::
edit2.text = :::End:::

gut jetzt dass problem:
wie kann ich alles wass zwichen :::begin::: und :::end::: in die "datacontent" TString liste eifügen?


//many thanks in advance
  Mit Zitat antworten Zitat
mr2

Registriert seit: 3. Mai 2003
140 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Loadfile.. scan for block.. add to TStringlist

  Alt 3. Nov 2003, 21:37
Zitat:
Delphi-Quellcode:
  filedata.Create;
  filedata.AddStrings(opendialog1.Files);
wird Dir um die Ohren fliegen. Probiers mal mit
Delphi-Quellcode:
  filedata := TStringList.Create;
  try
    filedata.LoadFromFile(opendialog1.FileName);
    while (Pos(':::Begin:::', filedata[0]) = 0)
      do filedata.Delete(0);
    while (Pos(':::End:::', filedata[Pred(filedata.Count)]) = 0)
      do filedata.Delete(Pred(filedata.Count));
    // eigentliche Verarbeitung der Daten (geht jetzt direkt in FileData - kopieren ist unnötig)
  finally
    FreeAndNil(filedata);
  end;
CU mr2
  Mit Zitat antworten Zitat
Skyruner2

Registriert seit: 26. Okt 2003
93 Beiträge
 
Delphi 7 Professional
 
#3

Re: Loadfile.. scan for block.. add to TStringlist

  Alt 4. Nov 2003, 12:52
danke erstmals.. doch ein problem:

in dem file wird es mehrere solcher positionen geben.

ich denke mal mit einem anderen anfang und ende, wie z.b. :::begin1::: :::end1::: :::begin2::: :::end2::: usw. (wede ich verscheinlich mit integer to string conversion machen oder so...) daher ist kopeiren nicht unnötig - sorry hätte ich ehr sagen sollen.



und ne nebenfrage:

warum würde
Delphi-Quellcode:
  filedata.Create;
  filedata.AddStrings(opendialog1.Files);
net so funktioniren bzw mir um di ohren fliegen?
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#4

Re: Loadfile.. scan for block.. add to TStringlist

  Alt 4. Nov 2003, 13:01
Zitat von Skyruner2:
und ne nebenfrage:

warum würde
Delphi-Quellcode:
  filedata.Create;
  filedata.AddStrings(opendialog1.Files);
net so funktioniren bzw mir um di ohren fliegen?
opendialog1.Files enthält nicht die Zeilen einer Textdatei, sondern eine Liste der im OpenDialog ausgewählten Dateien (Wenn Option ofAllowMultiselect aktiviert ist).

Ausserdem ist filedata.Create nicht möglich, da filedata ja noch nich erstellt ist und deshalb auch keine funktionierende .create hat ( ein Teufelskreis ).
  Mit Zitat antworten Zitat
Skyruner2

Registriert seit: 26. Okt 2003
93 Beiträge
 
Delphi 7 Professional
 
#5

Re: Loadfile.. scan for block.. add to TStringlist

  Alt 4. Nov 2003, 13:11
ok.. danke!

zum kopieren:
vieleicht mit einer for to schleife?
  Mit Zitat antworten Zitat
mr2

Registriert seit: 3. Mai 2003
140 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Loadfile.. scan for block.. add to TStringlist

  Alt 4. Nov 2003, 17:45
Hallo,

also erstmal solltest Du Objektinstanzen immer mit T<irgendwas>.Create erzeugen:

  filedata := TStringList.Create; Der Rest sollte so funktionieren:

Delphi-Quellcode:
  datacontent := nil;
  filedata := nil;
  try
    datacontent := TStringList.Create;
    filedata := TStringList.Create;
    filedata.LoadFromFile(opendialog1.FileName);
    repeat
      i := 0;
      while (Pos(':::Begin:::', filedata[i]) = 0) and (i <= Pred(filedata.Count))
        do Inc(i);
      Inc(i);
      while (Pos(':::End:::', filedata[i]) = 0) and (i <= Pred(filedata.Count)) do begin
        datacontent.Add(filedata[i]);
        Inc(i);
      end;
    until (i >= Pred(filedata.Count));
    // eigentliche Verarbeitung der Daten
  finally
    FreeAndNil(filedata);
    FreeAndNil(datacontent);
  end;
CU mr2
  Mit Zitat antworten Zitat
Skyruner2

Registriert seit: 26. Okt 2003
93 Beiträge
 
Delphi 7 Professional
 
#7

Re: Loadfile.. scan for block.. add to TStringlist

  Alt 4. Nov 2003, 21:23
t(...).create - hmm die einen nehmen es raus die anderen lassen es drin...


und dann ist da noch:

[quote="Skyruner2"]doch ein problem:

in dem file wird es mehrere solcher positionen geben.

ich denke mal mit einem anderen anfang und ende, wie z.b. :::begin1::: :::end1::: :::begin2::: :::end2::: usw. (wede ich verscheinlich mit integer to string conversion machen oder so...) daher ist kopeiren nicht unnötig - sorry hätte ich ehr sagen sollen.
quote]
  Mit Zitat antworten Zitat
mr2

Registriert seit: 3. Mai 2003
140 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Loadfile.. scan for block.. add to TStringlist

  Alt 5. Nov 2003, 19:32
Hallo,

ich glaube nicht, dass jemand das T... vor dem Create weglässt.
Für das andere Problem brauchst Du einfach nur ein zweite Variable (j) jeweils nur einmal in der Schleife zu Incremetieren und mittels IntToStr(j) den String dynamisch zusammen zu bauen.
"... we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we don't know. But there are also unknown unknowns - the ones we don't know we don't know."
  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 05:22 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