AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Erfassen und verarbeiten von Textdateien
Thema durchsuchen
Ansicht
Themen-Optionen

Erfassen und verarbeiten von Textdateien

Offene Frage von "paule42"
Ein Thema von paule42 · begonnen am 4. Aug 2007 · letzter Beitrag vom 7. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
paule42

Registriert seit: 30. Jul 2007
Ort: Berlin
5 Beiträge
 
Turbo Delphi für Win32
 
#1

Erfassen und verarbeiten von Textdateien

  Alt 4. Aug 2007, 20:07
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
my name is better than noname
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Frage eines Anfängers

  Alt 4. Aug 2007, 20:11
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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#3

Re: Frage eines Anfängers

  Alt 4. Aug 2007, 20:12
Hallo Paule,

erstmal herzlich willkommen in der DP.

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
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#4

Re: Frage eines Anfängers

  Alt 5. Aug 2007, 15:05
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 vergleichskritieriumthen
  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 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
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Frage eines Anfängers

  Alt 5. Aug 2007, 15:12
@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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Frage eines Anfängers

  Alt 5. Aug 2007, 15:30
Zitat:
ohne Objektorientierung
und TStringList steht im Konflikt. Mit TStringList geht es eben Objektorientiert weiter.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Frage eines Anfängers

  Alt 5. Aug 2007, 15:58
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
paule42

Registriert seit: 30. Jul 2007
Ort: Berlin
5 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Frage eines Anfängers

  Alt 5. Aug 2007, 18:23
Zitat von Phoenix:
Hallo Paule,

erstmal herzlich willkommen in der DP.

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.
Habe den Hinweis sofort beherzigt.
my name is better than noname
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: Erfassen und verarbeiten von Textdateien

  Alt 5. Aug 2007, 18:47
@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.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Erfassen und verarbeiten von Textdateien

  Alt 5. Aug 2007, 19:07
Ich würde ja eine TStringlist nehmen und durchiterieren, als mir da mit eigenen Klassen einen abzufrickeln.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:31 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