AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anfängerfrage (Datenbanken) aus der Praxis
Thema durchsuchen
Ansicht
Themen-Optionen

Anfängerfrage (Datenbanken) aus der Praxis

Ein Thema von fratis · begonnen am 1. Nov 2004 · letzter Beitrag vom 2. Nov 2004
Antwort Antwort
fratis

Registriert seit: 1. Nov 2004
4 Beiträge
 
#1

Anfängerfrage (Datenbanken) aus der Praxis

  Alt 1. Nov 2004, 22:13
Hallo,
ich bin ein ziemlicher Anfänger in Delphi habe folgende Aufgabe bekommen. Ich soll aus unformatierten Emails mit folgendem Format:

(Beispieltext)
Zitat:
Sehr geehrte Damen und Herren,
hiermit erhalten Sie unser Angebotfür den gewünschten Artikel.
(es kommen noch diverse weitere Vortexte)
Ihre Artikelnummer: diverse Leerzeichen 12345
Artikel: diverse Leerzeichen Kupferrohr 15mm
Farbe: diverse Leerzeichen rot
Preis: diverse Leerzeichen 20,35 Euro
Hersteller: diverse Leerzeichen Musterlieferant
Preisgültigkeit: diverse Leerzeichen 12.12.2004
(wieder diverse Texte)
Link:
http://www.musterlieferant/musterangebotfirmaxyz.html
(wieder diverse Texte)
eine kleine Datenbank erstellen. Die Felder Artikelnummer bis Preisgültigkeit stehen in jeweils einer eigenen Zeile.

Weil die unter dem Link angegebene Webseite nur für uns erstellt wurde und auch nur für kurze Zeit online ist, soll einmal eine Kopie komplett offline abgespeichert werden. (Ist für den Anfang noch nicht so wichtig)

Soweit die Aufgabe. Ich habe keine Ahnung wie ich das schaffen soll.

Bisher habe ich folgendes "geschafft" :

Ich füge die Email über dem Zwischenspeicher (das reicht für unsere Zwecke) mit

Delphi-Quellcode:
begin
memo1.Clear;
memo1.PasteFromClipboard;
end;
in ein Memofeld1 ein. Aus diesem lese ich dann mit z.B.

Delphi-Quellcode:
var i: integer;
begin
Memo2.Clear;
for i := 0 to Memo1.Lines.Count - 1 do
  begin
  if Pos('Farbe: ', Memo1.Lines.Strings[i]) > 0 then
  Memo2.Lines.Add(Memo1.Lines.Strings[i]);
  end;
die kompletten Zeilen Artikelnummer bis Preisgültigkeit in ein weiteres Memo2 ein.

Nun zu meinen Fragen
  • 1. Ich benötige nur die reine Artikelnummer,Bezeichnung usw. Wie bekomme ich nur die Daten in entsprechende Datenfelder ? Die Anzahl der Leerzeichen ist jedesmal unterschiedlich aber die Bezeichnung ist gleich.
  • 2. Wie kann ich den angegebenen Link auslesen ? Er steht immer an anderen Stellen, aber in der Vorzeile steht immer: "Link:" Kann man eigentlich eine Webseite komplett offline in einer Datenbank abspeichern ?
  • 3. Gehe ich überhaupt richtig vor ? Was würdet Ihr für diesen Anwendungsfall empfehlen ?
  • 4. Wo gibt es eventuell ein Tutorial zu diesem Thema ?

Vielen Dank
fratis
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Anfängerfrage (Datenbanken) aus der Praxis

  Alt 2. Nov 2004, 02:27
Hallo fratis,

zunächst einmal herzlich willkommen Im Delphi-PRAXIS Forum.

Du kannst alles nach dem Doppelpunkt mit Copy auslesen und die Trim - Funktion nutzen, die die Leerzeichen abschneidet. Schau dazu ggf. noch einmal in der OH nach, wenn du detailliertere Infos benötigst.

Wie du die Seite zu einem Link findest, kannst du im Forum nachlesen. Suche z.B. nach Hier im Forum suchenInternet Seite laden.

Ansonsten ist dein Vorgehen korrekt. Die eMail nach bekannten Mustern parsen und die Daten in eine DB speichern.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
fratis

Registriert seit: 1. Nov 2004
4 Beiträge
 
#3

Re: Anfängerfrage (Datenbanken) aus der Praxis

  Alt 2. Nov 2004, 16:23
Zitat von MrSpock:
Die eMail nach bekannten Mustern parsen und die Daten in eine DB speichern.
Könntet Ihr das bitte mal ein wenig genauer erklären. Eventuell mit einem Bespiel ?
Wie bekomme ich die Zeile mit der Linkadresse in ein eigenes Feld ?

fratis
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Anfängerfrage (Datenbanken) aus der Praxis

  Alt 2. Nov 2004, 16:29
Zitat von fratis:
...Wie bekomme ich die Zeile mit der Linkadresse in ein eigenes Feld ?...
Hai fratis,

was hast Du den schon in deinem Programm?

Du musste, wie schon geschrieben, nach "Schlüsselzeichen" suchen.
Aber ohne den Quelltext deines Programmes kann dir kaum einer helfen
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
fratis

Registriert seit: 1. Nov 2004
4 Beiträge
 
#5

Re: Anfängerfrage (Datenbanken) aus der Praxis

  Alt 2. Nov 2004, 18:10
Leider habe ich erst dises :

Delphi-Quellcode:
unit Hauptformular;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, StdActns, ActnList;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    ffnen1: TMenuItem;
    ffnen2: TMenuItem;
    N1: TMenuItem;
    Beenden1: TMenuItem;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    ActionList1: TActionList;
    EditPaste1: TEditPaste;
    EditSelectAll1: TEditSelectAll;
    Einfgen1: TMenuItem;
    Edit1: TEdit;
    Button1: TButton;
    Memo2: TMemo;
    Button2: TButton;
    procedure ffnen2Click(Sender: TObject);
    procedure ffnen1Click(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i: integer;
implementation

{$R *.dfm}

procedure TForm1.ffnen2Click(Sender: TObject);
begin
opendialog1.Execute;
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;

procedure TForm1.ffnen1Click(Sender: TObject);
begin
memo1.Lines.SaveToFile(opendialog1.FileName);
end;

procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Clear;
memo1.Clear;
Edit1.PasteFromClipboard;
memo1.PasteFromClipboard;
end;




procedure TForm1.Button2Click(Sender: TObject);
var i: integer;

begin
Memo2.Clear;

for i := 0 to Memo1.Lines.Count - 1 do
  begin
  if Pos('Ihre Artikelnummer: ', Memo1.Lines.Strings[i]) > 0 then
  Memo2.Lines.Add(Memo1.Lines.Strings[i]);
  end;
for i := 0 to Memo1.Lines.Count - 1 do
  begin
  if Pos('Artikel: ', Memo1.Lines.Strings[i]) > 0 then
  Memo2.Lines.Add(Memo1.Lines.Strings[i]);
  end;
for i := 0 to Memo1.Lines.Count - 1 do
  begin
  if Pos('Farbe: ', Memo1.Lines.Strings[i]) > 0 then
  Memo2.Lines.Add(Memo1.Lines.Strings[i]);
  end;
for i := 0 to Memo1.Lines.Count - 1 do
  begin
  if Pos('Preis: ', Memo1.Lines.Strings[i]) > 0 then
  Memo2.Lines.Add(Memo1.Lines.Strings[i]);
  end;
for i := 0 to Memo1.Lines.Count - 1 do
  begin
  if Pos('Hersteller: ', Memo1.Lines.Strings[i]) > 0 then
  Memo2.Lines.Add(Memo1.Lines.Strings[i]);
  end;
for i := 0 to Memo1.Lines.Count - 1 do
  begin
  if Pos('Preisgültigkeit: ', Memo1.Lines.Strings[i]) > 0 then
  Memo2.Lines.Add(Memo1.Lines.Strings[i]);
  end;

end;

end.
Es sind sicherlich sehr viele Fehler in diesem "Programm".

fratis
  Mit Zitat antworten Zitat
DeerHunter

Registriert seit: 8. Jun 2004
16 Beiträge
 
Delphi 6 Professional
 
#6

Re: Anfängerfrage (Datenbanken) aus der Praxis

  Alt 2. Nov 2004, 19:36
Also zuerst einmal musst du nicht für jedes Stichwort das komplette Memo erneut durchlaufen, es reicht also wenn du EINE for-Schleife hernimmst und da dann alle if-Abfragen reinpackst:

Delphi-Quellcode:
for i := 0 to Memo1.Lines.Count - 1 do
begin
  if Pos('Ihre Artikelnummer:', Memo1.Lines[i]) > 0 then
  Memo2.Lines.Add(Trim(Copy(Memo1.Lines[i], 20, Length(Memo1.Lines[i])-19)));
  if Pos('Artikel', Memo1.Lines[i]) > 0 then ... usw.

end;
mit dem Copy kopierst du erstmal alles aus dieser Zeile nach "Ihre Artikelnummer:" (also ab Zeichen 20) und entfernst dann davon noch mit Trim() die Leerzeichen an Anfang und ggf. Ende.

(um auf die Zeilen des Memos zuzugreifen reicht übrigens auch Memo1.Lines[i], das .Strings kann man sich hier sparen)
  Mit Zitat antworten Zitat
fratis

Registriert seit: 1. Nov 2004
4 Beiträge
 
#7

Re: Anfängerfrage (Datenbanken) aus der Praxis

  Alt 2. Nov 2004, 23:10
Vielen Dank - das hat mir schon mal sehr geholfen.

fratis
  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 02:48 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