Entwickler-Ecke

Sonstiges (Delphi) - Textdateien in Tabellen einlesen


colaka - So 04.01.09 19:38
Titel: Textdateien in Tabellen einlesen
Hallo,

ich erhalte von meinen Lieferanten Preislisten als Textdateien, die ich in Tabellen einlese. Bisher hatte ich nur Dateien, bei denen die einzelnen Spalten durch ein Semikolon getrennt waren. Da war es nicht schwer, die einzelnen Zeilen in Stücken bis zum Semikolon in die einzelnen Datenbankfelder zu übertragen.
Doch jetzt versuche ich eine Preisliste ohne Trennzeichen einzulesen, so wie die folgende:


Quelltext
1:
2:
3:
4:
Hersteller_Artikelnummer  Info4  Artikelnummer  Bezeichnung  Obergruppe_S1  Obergruppe_S2  Warengruppe_S1  Warengruppe_S2  Verpackungseinheit  Lagermenge  Verfügbarkeit  Status_Typ  Preis  UST_Typ  Länge  Breite  Höhe  Info3  ArtikelText_S1  Nettogewicht  Bruttogewicht  Bildurl  EAN  ArtikelBez_S3
133313  Equip  ADA0000334  Kab USB 1.1 Parallel Adapter für PC / equip  Kabel+Adapter  Cable+Adapter  Adapter USB  Adapter USB  40  78  0  0  5,67  0  0,117  0,283  0,027  http://www.equip-info.net/german/index.php?main=0&suche=133313&prod=1011&suche=133313  Key Features:• Konverter verbinden PCs (USB Schnittstelle) mit Peripheriegeräten ohne USB-Schnittstelle• Unterstützt Windows 98SE, ME, 2000, XP, Vista• Inkl. Setup CD• Verpackung: equip Blister • USB 1.1 Konverter A Stecker > IEEE-1284 Stecker parallel  0,1127  0,155  http://www.bcom.de/images/productshotspreisliste/173x218/A58588.jpg  4015867579862  Kabel USB 1.1 Parallel Adapter für PC
DA-70118  Digitus  ADA0002144  Kab USB 1.1 Digitus USB>PS-2 Adapter DA-70118  Kabel+Adapter  Cable+Adapter  Adapter USB  Adapter USB  80  68  0  0  2,40  0  0,216  0,1  0,024  http://www.digitus.info/de/produkte/zubehoer/?c=1216&p=3510  Ultra kompaktes Adapterkabel • USB 1.1 und APM 1.2 kompatibel • 2 x Mini DIN 6-pin Buchse für Maus und Tastatur  0,0441  0,061  http://www.bcom.de/images/productshotspreisliste/173x218/A59421.jpg  4016032117933  Kabel USB 1.1 USB>PS-2 Adapter DA-70118
DA-70146  Digitus  ADA0003892  Kab USB 2.0 Digitus Seriell Adapter DA-70146  Kabel+Adapter  Cable+Adapter  Adapter USB  Adapter USB  40  152  0  0  5,81  0  0,091  0,136  0,052  http://www.digitus.info/de/produkte/zubehoer/?c=1216&p=3530  • Entspricht dem USB 2.0 (USB 1.1) Standard • Unterstützt RS 232 serial Interface • Maximale Datentransferrate von über 1Mbps • Einsetzbar für PDA und Modems • USB Verlängerungskabel wird mitgeliefert ca. 80cm lang • Unterstützung für folgende Betriebssysteme: Windows 98SE/2000/XP/Vista/Linux und MAC OS V8.6 • Chipsatz: FTDI / FT232BM  0,0707  0,098  http://www.bcom.de/images/productshotspreisliste/173x218/A60334.jpg  4016032170426  Kabel USB 2.0 Seriell Adapter DA-70146


Leider komme ich damit auf keinen grünen Zweig, weil ich ja schlecht ein Leerzeichen (oder auch 2) als Trenner verwenden kann, weil im Beschreibungstext auch Leerzeichen enthalten sind.

Hat hier vielleicht jemand eine Idee?

Danke Ebi


haentschman - So 04.01.09 19:49

hmmm...ohne mich festnageln zu lassen. 8)

Ich glaube da hast du wenig Chancen. Du hast es ja schon richtig gesagt...wo ist die Trennung zwischen den Datensätzen.
Ich würde mal beim Lieferanten der Datei "nachhaken :motz:" wer diesen Unsinn verzapft und eine andere Version anfordern.

:wave:


MSCH - So 04.01.09 20:40

tse tse ich würd dem lieferanten das zeug um die Ohren hauen :-)
Wie wäre es mit XML?
Flat files sind zwar einfach aber i.d.R. normalisiert.
*grübel*
grez
msch


pesi - Mo 05.01.09 13:01
Titel: Wirklich Leerzeichen als Trennzeichen???
Also ich kann nicht so recht glauben, dass es wirklich Leerzeichen sind, die die einzelnen Felder trennen.
Ich würde ja darauf tippen, dass es TABs sind die dazwischen sind. Hast Du das mal im Texteditor überprüft?


jaenicke - Mo 05.01.09 13:50
Titel: Re: Textdateien in Tabellen einlesen
user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
Leider komme ich damit auf keinen grünen Zweig, weil ich ja schlecht ein Leerzeichen (oder auch 2) als Trenner verwenden kann, weil im Beschreibungstext auch Leerzeichen enthalten sind.
Es sind aber nur zwei Leerzeichen hintereinander zwischen den Spalten. Sonst würden es ja nicht jeweils 23 doppelte Leerzeichen zwischen den Überschriften und in jeder Zeile sein.

Also versuch es doch einfach mal mit zwei Leerzeichen als Trennzeichen.


MSCH - Mo 05.01.09 18:49
Titel: Re: Textdateien in Tabellen einlesen
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Also versuch es doch einfach mal mit zwei Leerzeichen als Trennzeichen.

*ROFL*
bis ein Trollo mehr als ein Leerzeichen in dem Text begräbt. Viel Spass bei der Suche.
Das ist Software von vor-vor-vorgestern.
:-)Msch

Moderiert von user profile iconNarses: Zitat repariert


jaenicke - Mo 05.01.09 19:35

Natürlich ist das keine gute Lösung, aber ohne andere Daten ist es die einzige...

Abgesehen davon verrutschen dann bei dem entsprechenden Eintrag "nur" die Spalten, wenn es wirklich mal vorkommen sollte. Aber wenn das als Trennzeichen benutzt wird, kann man zumindest erstmal hoffen, dass das verhindert wird.

Aber eine andere Lösung (außer sinnvoll formatierte Daten anzufordern) gibt es eben nicht.


MSCH - Mo 05.01.09 19:43

Dann bau wenigstens eine Prüfung rein.
alles mit#32#32 durch | ersetzen und dann schauen,ob die Anzahl der so erzeugten "Spalten" mit der Anzahl der Spalten der Zieltabelle übereinstimmt.

:-)msch