AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Restliche Zeilen aus HTML Datei nach </table> löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Restliche Zeilen aus HTML Datei nach </table> löschen

Ein Thema von Fredbert · begonnen am 10. Nov 2005 · letzter Beitrag vom 10. Nov 2005
Antwort Antwort
Fredbert

Registriert seit: 18. Okt 2005
13 Beiträge
 
#1

Restliche Zeilen aus HTML Datei nach </table> löschen

  Alt 10. Nov 2005, 06:57
Wie geht es das ich ein Programm schreib und er nach dem Befehl </table den Rest löscht? Am besten wäre es wenn er </table> löscht


mfg Fred
  Mit Zitat antworten Zitat
Stefan Dieler
(Gast)

n/a Beiträge
 
#2

Re: Restliche Zeilen aus HTML Datei nach </table> lösc

  Alt 10. Nov 2005, 07:06
Hallo Fred,

versuche mal folgendes:

Delete(DeinString, Pos('</table>', DeinString), Length(DeinString));
  Mit Zitat antworten Zitat
Fredbert

Registriert seit: 18. Okt 2005
13 Beiträge
 
#3

Re: Restliche Zeilen aus HTML Datei nach </table> lösc

  Alt 10. Nov 2005, 08:23
Hab jetz soweit:

Delphi-Quellcode:
AssignFile(nFile, 'NEUTEILE.htm');
ReSet(nFile);
while not EoF(nFile) do
begin
  inc(i);
  ReadLn(nFile, zeile);
  Setlength(myArray, length(myArray)+1);
  myArray[i] := zeile;
  if myArray[i] = '</table>then break;
  showmessage('TEST');
end;
Es wird alle kompiliert aber ich bekommen beim drücken des Buttons folgende Fehlermeldung:

---> Anlagen!
Miniaturansicht angehängter Grafiken
fehler_197.jpg  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Restliche Zeilen aus HTML Datei nach </table> lösc

  Alt 10. Nov 2005, 08:23
Hallo ihr zwei,

ihr könnt doch die HTML-Datei nicht einfach verstümmeln - das ist doch ein strukturiertes Dokument. Besser ihr analysiert das Dokument mit Hilfe eines Parsers und entfernt die nicht gewünschten Elemente.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Restliche Zeilen aus HTML Datei nach </table> lösc

  Alt 10. Nov 2005, 08:45
Hi,
ich würde dir davon abraten es mittels AssignFile und readln zu machen. Du wirst letztlich (wie marabu schon sagte) nicht einfach alles hinter einem Tag löschen dürfen. Insbesondere die schließenden Tags mindestens </html> sollten nicht einfach gelöscht werden. Aber auch ein </table> gehört zu einem <table> und sollte damit nicht einfach aus der Datei fliegen. Sonst hast du dort gleich dein nächstes Problem.

Für das Laden einer Datei zwischenspeichern aller Zeilen solltest du lieber auf eine TStringList (oder THashedStringList) zurückgreifen. Da gibt es den Befehl LoadFromFile und die liest alle Zeilen in eine Liste von Strings. Das Verlängern von dyn. Arrays um 1 ist immer so eine Sache und ich glaube du gibst den Speicher danach auch nicht wieder frei. Nicht wirklich schön. Mit einer TStringList kannst du jedenfalls alle Zeilen einlesen und einzeln durchgehen.
Ab der Zeile in der du </table> findest, solltest du dir gut überlegen was du löschen darfst und was nicht. Parser (wieder mal wie marabu schon sagte) wäre eine Idee, alternativ müsstest du dir merken, welche Tags du gerade öffnend liest und darst den Ihnalt einschließlich des schließenden Tags löschen, aber eben nur bei denen. Andere Tags, die schon vor </table> geöffnet wurden müssen natürlich weiterhin geschlossen werden. Zudem würde dein Programm nicht berücksichtigen, was passiert wenn du ein Tag </table></html> (als Beispiel) hast. Denn HTML-Tags können auch beliebig nebeneinander (ohne Zeilenumbruch) geschrieben werden.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Fredbert

Registriert seit: 18. Okt 2005
13 Beiträge
 
#6

Re: Restliche Zeilen aus HTML Datei nach </table> lösc

  Alt 10. Nov 2005, 13:42
Habs anderst gelöst:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus, ShellApi;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label7: TLabel;
    Button3: TButton;
    Edit7: TEdit;
    Label8: TLabel;
    Button4: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Men1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  nFile : TextFile;

implementation
var
myArray : array of string;
k, i, j, z : Integer;
ordner1, ordner2, ordner3 : String;

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
Button1.Enabled := True;
Button4.Enabled := False;
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Edit5.Text := '';
Edit6.Text := '';
Edit7.Text := '';
end;

procedure TForm1.Men1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var zeile : string;
var nFile : Textfile;
dummy : String;

begin
AssignFile(nFile, 'NEUTEILE.htm');
ReSet(nFile);
while not EoF(nFile) do
begin
  ReadLn(nFile, dummy);
  inc(j);
end;
CloseFile(nFile);
ReSet(nFile);
Setlength(myArray, j);
i := 0;
while not EoF(nFile) do
begin
ReadLn(nFile, zeile);
myArray[i] := zeile;
if myArray[i] = ' </tr>then
begin
k := k+1;
end;
if myArray[i] = '</tr>then
begin
k := k+1;
end;
if myArray[i] = '</table>then break;
inc(i);
end;
k := k+1;
CloseFile(nFile);
end;


procedure TForm1.Button1Click(Sender: TObject);

begin
if Edit1.Text = 'then
begin
  showmessage('Bitte alle Angaben vervollständigen!!');
end else
if Edit2.Text = 'then
begin
  showmessage('Bitte alle Angaben vervollständigen!!');
end else
if Edit3.Text = 'then
begin
  showmessage('Bitte alle Angaben vervollständigen!!');
end else
if Edit4.Text = 'then
begin
  showmessage('Bitte alle Angaben vervollständigen!!');
end else
if Edit5.Text = 'then
begin
  showmessage('Bitte alle Angaben vervollständigen!!');
end else
if Edit6.Text = 'then
begin
  showmessage('Bitte alle Angaben vervollständigen!!');
end else
if Edit7.Text = 'then
begin
  showmessage('Bitte alle Angaben vervollständigen!!');
end else
begin
setlength(myArray, i+22);
ordner1 := stringreplace(Edit3.Text, '-', '', [rfReplaceAll]);
ordner2 := copy(ordner1,0,4);
ordner3 := copy(ordner1,3,8);
myArray[i] := '<tr>';
myArray[i+1] := '<td width=76 valign=top style="width:2.0cm;padding:0cm 5.4pt 0cm 5.4pt">';
myArray[i+2] := '<p class=MsoNormal align=center style="text-align:center">'+IntToStr(k+1)+'</p>';
myArray[i+3] := '</td>';
myArray[i+4] := '<td width=345 valign=top style="width:258.55pt;padding:0cm 5.4pt 0cm 5.4pt">';
myArray[i+5] := '<p class=MsoNormal><span style="color:black;layout-grid-mode:line">'+Edit1.Text+'</span></p>';
myArray[i+6] := '</td>';
myArray[i+7] := '<td width=66 valign=top style="width:49.25pt;padding:0cm 5.4pt 0cm 5.4pt">';
myArray[i+8] := '<p class=MsoNormal align=center style="text-align:center">'+Edit2.Text+'</p>';
myArray[i+9] := '</td>';
myArray[i+10] := '<td width=90 valign=top style="width:67.45pt;padding:0cm 5.4pt 0cm 5.4pt">';
myArray[i+11] := '<p class=MsoNormal align=center style="text-align:center">'+Edit4.Text+'.'+Edit5.Text+'.'+Edit6.Text+'</p>';
myArray[i+12] := '</td>';
myArray[i+13] := '<td width=177 valign=top style="width:132.85pt;padding:0cm 5.4pt 0cm 5.4pt">';
myArray[i+14] := '<p class=MsoNormal align=center style="text-align:center">[url="'+ordner2+'/'+ordner3+'/'+Edit7.Text+'"]'+Edit3.Text+'[/url]</p>';
myArray[i+15] := '</td>';
myArray[i+16] := '</tr>';
myArray[i+17] := '</table>';
myArray[i+18] := '<p class=MsoHeader></p>';
myArray[i+19] := '</div>';
myArray[i+20] := '</body>';
myArray[i+21] := '</html>';
Button1.Enabled := False;
Button4.Enabled := true;
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
AssignFile(nFile, 'NEUTEILE.htm');
Rewrite(nFile);
for z := 0 to length(myArray)-1 do
begin
  WriteLn(nFile, MyArray[z]);
end;
CloseFile(nFile);
setlength(myArray, j+1);
Button1.Enabled := True;
Button4.Enabled := False;
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Edit5.Text := '';
Edit6.Text := '';
Edit7.Text := '';
end;





procedure TForm1.Panel1Click(Sender: TObject);
begin
ShellExecute(handle, PChar('OPEN'), PChar('NEUTEILE.htm'), nil, nil, sw_normal);
end;

end.
  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 16:20 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