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 Erfassen und verarbeiten von Textdateien (https://www.delphipraxis.net/97102-erfassen-und-verarbeiten-von-textdateien.html)

paule42 4. Aug 2007 19:07


Erfassen und verarbeiten von Textdateien
 
Hallo, liebe Profis,
wie bereits beschrieben, bin ich Anfänger. Ich habe zwar vor vielen Jahren mal mit Turbopascal 3.0 (unter CPM) programmiert,aber es ist in meinem alten Hirn nicht viel davon übrig geblieben. Um mir und meinen Kollegen die Arbeit zu erleichtern, habe ich es mir in den Kopf gesetzt, mich an einem dafür nötigen Programm zu versuchen. Der Neueinstig fällt mir aber schwer und deshalb hoffe ich, dass ich in diesem Forum ein paar Schläge auf den Hinterkopf als Denkanstoß bekommen kann.

Mein Projekt soll folgendes realisieren:

Es gibt eine Textdatei, aus der nur einige wenige Strings extrahiert, sortiert und mit zusätzlichen Texten wieder gespeichert werden sollen.

Bsp.: ...

{
positionAufLinie 1
meldergruppenAdresse 20-2
kurzInfo "U1/1/84"
kommentar "Flur BTC"
stromverbrauch 65
....


Von diesem Ausschnitt benötige ich nur die Infos, die nach "meldergruppenAdresse" "kurzInfo" und "kommentar" enthalten sind. Diese Infos müssen dann nach "meldergruppenAdresse" aufsteigend sortiert und mit zusätzlichen Texten versehen in einer eigenen Datei gespeichert werden.
Kann mir dabei hier vielleicht jemand bei der Herangehensweise an das Problem helfen? Um nicht missverstanden zu werden, ich will schon meinen alten Schädel fordern, brauche aber einen oder besser mehrere Denkanstöße, wohin die Richtung gehen soll.
Ach so, ja ich habe Delphi 7 und Turbo Delphi 2006.

Über eine hilfreiche Antwort würde ich mich freuen.

MfG
paule42

DGL-luke 4. Aug 2007 19:11

Re: Frage eines Anfängers
 
Hallo,

die TStringList kann ihre strings valuelist-mäßig organisieren: http://www.delphipraxis.net/internal...t.php?t=112794

Wenn du als NameValueSeparator das Leerzeichen einträgst, solltest du die strings einzeln rausholen und neu anordnen (in deiner sortierung) können.

Phoenix 4. Aug 2007 19:12

Re: Frage eines Anfängers
 
Hallo Paule,

erstmal herzlich willkommen in der DP. :hi:

Und dann gleich noch die obligatorische 'Standpauke' für noch unwissende, die Threads mit dem Titel 'Frage' posten. Bitte nicht böse nehmen ;-)

Fragen haben hier eigentlich alle, die was posten. Und Anfänger sind auch viele. Aber jemand, der sich mit einem Bereich auskennt schaut eher nach Themen, die vom Titel her in seinen Bereich passen um sie zu beantworten. Auch unsere Suchfunktion bedankt sich, wenn Threads einen aussagekräftigen Titel haben.

Deshalb: Bitte rechts oben bei Deinem Beitrag auf 'Edit' klicken und den Titel in was aussagekräftiges ändern, so dass klar wird, dass es hier um Daten aus Textdateien geht, die verarbeitet werden sollen. Danke :)

grenzgaenger 5. Aug 2007 14:05

Re: Frage eines Anfängers
 
hallo paule,

denke, dass es objekt orientiert leichter geht, wie in den TP3 zeiten... daher hier ein paar hinweise, wie du rangehen kannst...

a) definition eines containers, als objekt
Delphi-Quellcode:
type titem = class
 addresse: string; //für deine daten
 kommendar: string;
 ....
end;
b) definition eines containers für deine items, welche du aus dem flat file herausgesucht hast..
Delphi-Quellcode:
type tItemList = class(tObjectList)
//deine methoden
 procedure load;
 procedure save(filename: string);
end;
c) einlesen deines flat files und speichern der selektierten daten
Delphi-Quellcode:
procedure tItemList.load;
var
 sl: tstringlist;
  i: integer;
 item: tItem;
begin
 sl := tstringlist.create;
 try
  sl.loadfromfile('dein flat file');
  store := false;
 for i := to sl.count - 1 do
 begin
  if sl.item[i] = 'dein vergleichskritierium' then
  begin
   item := tIdem.create;
   item.kommendar := sl.item[i];
   item.adresse  := sl.item[i+3];
   ...
   add(item);
  end;
 end;
 finally
  sl.free;
 end;
end;
d) noch deine codierung für save hinterlegen
Delphi-Quellcode:
begin
 datei_offnen;
 for i := 0 to count - 1 do
 begin
  formatiere tItem(item[i]).kommendar;
  formatiere titem(item[i]).....;
  speichere in datei;
 end;
end;
e) und dann noch abspeichern deiner daten
Delphi-Quellcode:
Itemlist.save('deine datei');

das wäre es so im grossen und ganzen. kannst die ladeprocedure noch etwas optimieren... und deine daten ggf. noch weiter ergänzen...

noch viel erfolg und bei fragen, kannst dich gern an das forum wenden.

grüsse
gg

Apollonius 5. Aug 2007 14:12

Re: Frage eines Anfängers
 
@grenzgaenger: Das ist doch totaler Overkill! Die Stringlist, wie von DGL-Luke empfohlen, reicht doch völlig. Und das könnte man ohne Objektorientierung schneller machen als auf deine Art.

sniper_w 5. Aug 2007 14:30

Re: Frage eines Anfängers
 
Zitat:

ohne Objektorientierung
und TStringList steht im Konflikt. Mit TStringList geht es eben Objektorientiert weiter.

Apollonius 5. Aug 2007 14:58

Re: Frage eines Anfängers
 
Ich habe nicht bestritten, dass eine Stringlist OOP ist. Ich meinte nur: Es geht selbst mit gutem, altem rewrite/reset und dann read/write schneller, als wenn ich mir erst mal mehrere Klassenn zusammenhacke.

paule42 5. Aug 2007 17:23

Re: Frage eines Anfängers
 
Zitat:

Zitat von Phoenix
Hallo Paule,

erstmal herzlich willkommen in der DP. :hi:

Und dann gleich noch die obligatorische 'Standpauke' für noch unwissende, die Threads mit dem Titel 'Frage' posten. Bitte nicht böse nehmen ;-)

Danke für die nette Begrüßung! Ich bin natürlich nicht böse und immer noch lernfähig. :spin2:
Habe den Hinweis sofort beherzigt.

grenzgaenger 5. Aug 2007 17:47

Re: Erfassen und verarbeiten von Textdateien
 
@Apollonius: klar kann man das mit reset und readln machen. aber ich denke, das ist kompliezierter als ".loadfromfile(...)" anzugeben. je nachdem, wie paule die daten dann abspeichern will, kommt er wohl an writeln nicht vorbei.

als ersatz für die tobjectlist, geht natürlich auch die dynamische speicherverwaltung mit new/dispose und ablegen der fragmente auf den heap. aber da muss er sich um das erstellen und das freigeben des speichers selber kümmern, so dass es mit 'ner tobjectlist wohl schneller geht, als mit 'ner verketteten liste oder 'n array auf pointer...

aber warten wir erst mal ab, in welche richtung sein ansatz geht und wo weitere fragen auftreten.

Apollonius 5. Aug 2007 18:07

Re: Erfassen und verarbeiten von Textdateien
 
Ich würde ja eine TStringlist nehmen und durchiterieren, als mir da mit eigenen Klassen einen abzufrickeln.


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