AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo Feld export nach CSV

Ein Thema von klaus9 · begonnen am 25. Feb 2012 · letzter Beitrag vom 27. Feb 2012
Antwort Antwort
Seite 3 von 3     123   
Popov
(Gast)

n/a Beiträge
 
#21

AW: Memo Feld export nach CSV

  Alt 26. Feb 2012, 15:58
@Klaus

Ich habe dich zwar falsch verstanden, ich dachte du meinst nicht den Quelltext, sondern den Inhalt einer Webseite. Da ist das Auslesen der Tabellen eine Kleinigkeit, aber Tabelle aus dem Quelltext ist auch nicht problematisch:

In Memo1 ist der Quelltext, in Memo2 ist die Csv-Tabelle. Zu beachten ist, es wird die erste Tabelle konvertiert.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s, sTemp: String;
  i, p1, p2: Integer;
begin
  s := Memo1.Lines.Text;

  //Vorsicht! Möglich Fehlerquelle Klein/Großschreibung der Tags
  //Zuerst ERSTE Tabelle suchen und auschneiden
  p1 := Pos('<table', s);
  p2 := Pos('</table', s);

  if p1 = 0 then
  begin
    MessageDlg('Tabelle nicht gefunden', mtInformation, [mbOk], 0);
    Exit;
  end;

  s := Copy(s, p1, p2 - p1); //Kopiert Bereich zwischen table-Tags
  p1 := Pos('>', s);
  s := Copy(s, p1 + 1, MaxInt); //Entfert <table ... > am Anfang

  //Zelle-Tags gegen Anführungzeichen ersetzten
  s := StringReplace(s, '<th>', '"', [rfReplaceAll, rfIgnoreCase]);
  s := StringReplace(s, '</th>', '",', [rfReplaceAll, rfIgnoreCase]);
  s := StringReplace(s, '<td>', '"', [rfReplaceAll, rfIgnoreCase]);
  s := StringReplace(s, '</td>', '",', [rfReplaceAll, rfIgnoreCase]);
  //Zeilen entfernen
  s := StringReplace(s, #13, '', [rfReplaceAll, rfIgnoreCase]);
  s := StringReplace(s, #10, '', [rfReplaceAll, rfIgnoreCase]);

  while Pos('</tr', s) > 0 do
  begin
    p1 := Pos('"', s); //sucht anfang erste Zelle
    p2 := Pos('</tr', s); //sucht ende letzte Zelle
    sTemp := Copy(s, p1, p2 - p1); //Kopiert Tabellensatz in sTemp
    Delete(s, 1, p2); //Löscht Tabellensatz in s

    Memo2.Lines.Add(sTemp); //Übergibt Tabellensatz am Memo2
  end;

  //Zueletzt aufräumen. Letztes Komma ist zuviel
  s := Memo2.Lines.Text;
  s := StringReplace(s, ',' + #13#10, #13#10, [rfReplaceAll]);
  Memo2.Lines.Text := s;
end;
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#22

AW: Memo Feld export nach CSV

  Alt 26. Feb 2012, 22:26
hi Popov,

ich glaube das ist echt genial.. ich muß nachher nur mal das an meine seite angleichen..

Cool

Danke..

Hast du vielleicht auch eine idee das andere Problem zu lösen mit dem StringGrid, weil ich das auch gut gebrauchen kann.. Dort bekomme ich es leider nicht hin das er Datensätze an das Stringgrid übergibt und dann
hintereinander einfügt.. der überschreibt mir immer bei ausführen das stringgrid..

habe schon einiges versucht..

ich glaube es liegt am

Delphi-Quellcode:
  aNode := WebBrowser1.OleObject.Document.all.tags(Edit8.text).Item(StrToInt(edit9.text));
// r := aNode.all.tags('tr').Length;//Zeilen feststellen
  r := aNode.all.tags(Edit10.text).Length;//Zeilen feststellen
  StringGrid1.RowCount := r;
  for z := 0 to r-1 do
    begin
Daran StringGrid1.RowCount := r;
wenn ich stringGrid1.RowCount := StringGrid1.RowCount +1; mache würde er es glaub ich als letzte stelle im grid anhängen kann aber dann nicht die " r := aNode.all.tags(Edit10.text).Length;//" mit einfügen
auch " StringGrid1.RowCount := r + 1;" funktioniert leider nicht
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#23

AW: Memo Feld export nach CSV

  Alt 26. Feb 2012, 22:42
[...] Daran StringGrid1.RowCount := r;
wenn ich stringGrid1.RowCount := StringGrid1.RowCount +1; mache würde er es glaub ich als letzte stelle im grid anhängen kann aber dann nicht die " r := aNode.all.tags(Edit10.text).Length;//" mit einfügen
auch " StringGrid1.RowCount := r + 1;" funktioniert leider nicht
Wenn Du endlich einmal Deine Problemstellungen vernünftig beschreiben würdest, würdest Du sehen, dass Du jetzt eigentlich selbst auf die Lösung kommen müsstest.

Wenn da nur nicht so viele Konjunktive bei Dir wären...
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#24

AW: Memo Feld export nach CSV

  Alt 27. Feb 2012, 09:08
Wenn du ein Stringgrid verwendest und die Daten in eine CSV Datei speichern magst, kannst du auch mal hier gucken.
Coffeecoder
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#25

AW: Memo Feld export nach CSV

  Alt 27. Feb 2012, 10:33
Hi

Vielen Dank, das mit der csv ist ja genial.. Kann ich auch gut gebrauchen .


Dankeschön
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#26

AW: Memo Feld export nach CSV

  Alt 27. Feb 2012, 13:26
An popov's Lösung ist die direkte Übergabe an das Memo, der Schwachpunkt. Benutze hier lieber eine Stringlist, von dort aus ist das Befüllen eines Stringgrids und/oder einenes Memos eigentlich kein Problem.

Auch wenn vagtler ein wenig unfreundlich war, in der Sache hat er durchaus recht. Überleg Dir was Du willst und versuch es so zu formulieren, daß geistig etwas zurück gebliebene Menschen es verstehen. Dann ist es für Dich auch einfacher an die Lösung zukommen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#27

AW: Memo Feld export nach CSV

  Alt 27. Feb 2012, 14:36
An popov's Lösung ist die direkte Übergabe an das Memo, der Schwachpunkt.
Popov's Lösung hat mehr als nur einen Schwachpunkt. Ich wollte nur das Prinzip zeigen, und dass es nicht so schwer ist den Quellcode zu parsen. Das Ganze funktioniert so, ist aber nicht Idiotensicher. Beispiel: <td> kann auch als <td class="x"> geschrieben werden. Es besser zu machen ist aber auch kein großer Akt.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#28

AW: Memo Feld export nach CSV

  Alt 27. Feb 2012, 14:45
mir ging's nur darum, die Datenhaltung im Memo zu unterbinden,
das ist ja nicht nur eine Frage des Stils sondern auch der Datenintegrität.
(der Schwachpunkt war nicht pers. gemeint!)
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#29

AW: Memo Feld export nach CSV

  Alt 27. Feb 2012, 14:53
Hab es auch nicht so verstanden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 22:34 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