![]() |
AW: Memo Feld export nach CSV
@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; |
AW: Memo Feld export nach CSV
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:
Daran StringGrid1.RowCount := r;
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 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 :( |
AW: Memo Feld export nach CSV
Zitat:
Wenn da nur nicht so viele Konjunktive bei Dir wären... |
AW: Memo Feld export nach CSV
Wenn du ein Stringgrid verwendest und die Daten in eine CSV Datei speichern magst, kannst du auch mal
![]() |
AW: Memo Feld export nach CSV
Hi
Vielen Dank, das mit der csv ist ja genial.. Kann ich auch gut gebrauchen . Dankeschön |
AW: Memo Feld export nach CSV
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 |
AW: Memo Feld export nach CSV
Zitat:
|
AW: Memo Feld export nach CSV
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 |
AW: Memo Feld export nach CSV
Hab es auch nicht so verstanden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz