Identificerer HTML Tag
Identificerer HTML TagHvodan finder man ud af om følgende HTML Link tag: <a Href="www.mitdomæne.dk" Title="mitdomæne">Mit domæne</a>
er et "a"-tag, samtidig med at der ikke tages forbeholdt for store og små bogstaver?
Herefter skal man så kunne parse HTML link tags, a, op i op i dens attributer, så der fx kommer der til at stå i et edit for href: "www.mitdomæne.dk", mens der i et andet for title kommer til at stå "mitdomæne"
igen hvor der IKKE tages hensyn til store og små bogstaver, så HREF opfattes på samme måde som HrEf!
Man skal så kunne ændre HTML link (a) tags attributer via de to editfelter.
Det svarer nogenlunde til at man højreklikker i Stone WebWriter og så redigere man det valgte tags!
Jeg forestiller mig at der bruges tekstkomp. TSynEdit.
Jeg fandt følgende kode der hvis har fat i noget, men jeg kan bare ikke komme videre!!!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SynEdit, SynMemo, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
SynMemo1: TSynMemo;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure SynMemo1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
//LinkText, Title, FileName: String;
implementation
uses StrUtils;
{$R *.dfm}
function GetLinkFilename(SynMemo: TCustomSynEdit): String;
var
LinkText: String;
StartPos, EndPos,
TitleStartPos, TitleEndPos,
SelStartTmp: Integer;
begin
with SynMemo do
begin
Result := Text;
SelStartTmp := SelStart;
StartPos := LastDelimiter('<',Copy(Text, 0, SelStart));
EndPos := AnsiPos('</a>', Copy(Text, StartPos, Length(Text)))+3;
if (StartPos = 0) or (EndPos = 0) then
Exit;
LinkText := Copy(Text,StartPos,EndPos);
TitleStartPos := AnsiPos('href="', LineText)+6;
TitleEndPos := AnsiPos('"', Copy(LineText, AnsiPos('href="', LineText)+6, Length(LinkText)))-1;
Result := Copy(LinkText, TitleStartPos, TitleEndPos);
end;
end;
function SetLinkFilename(SynMemo: TCustomSynEdit; NewValue: String): String;
var
LinkText: String;
StartPos, EndPos,
TitleStartPos, TitleEndPos,
SelStartTmp: Integer;
begin
with SynMemo do
begin
Result := Text;
SelStartTmp := SelStart;
StartPos := LastDelimiter('<',Copy(Text, 0, SelStart));
EndPos := AnsiPos('</a>', Copy(Text, StartPos, Length(Text)))+3;
if (StartPos = 0) or (EndPos = 0) then
Exit;
LinkText := Copy(Text,StartPos,EndPos);
TitleStartPos := AnsiPos('href="', LineText)+6;
TitleEndPos := AnsiPos('"', Copy(LineText, AnsiPos('href="', LineText)+6, Length(LinkText)))-1;
Delete(LinkText, TitleStartPos, TitleEndPos);
Insert(NewValue, LinkText, TitleStartPos);
Delete(Result, StartPos, EndPos);
Insert(LinkText, Result, StartPos);
end;
end;
function GetLinkTitle(SynMemo: TCustomSynEdit): String;
var
LinkText: String;
StartPos, EndPos,
TitleStartPos, TitleEndPos,
SelStartTmp: Integer;
begin
with SynMemo do
begin
Result := Text;
SelStartTmp := SelStart;
StartPos := LastDelimiter('<',Copy(Text, 0, SelStart));
EndPos := AnsiPos('</a>', Copy(Text, StartPos, Length(Text)))+3;
if (StartPos = 0) or (EndPos = 0) then
Exit;
LinkText := Copy(Text,StartPos,EndPos);
TitleStartPos := AnsiPos('title="', LineText)+7;
TitleEndPos := AnsiPos('"', Copy(LineText, AnsiPos('title="', LineText)+7, Length(LinkText)))-1;
Result := Copy(LinkText, TitleStartPos, TitleEndPos);
end;
end;
function SetLinkTitle(SynMemo: TCustomSynEdit; NewValue: String): String;
var
LinkText: String;
StartPos, EndPos,
TitleStartPos, TitleEndPos,
SelStartTmp: Integer;
begin
with SynMemo do
begin
Result := Text;
SelStartTmp := SelStart;
StartPos := LastDelimiter('<',Copy(Text, 0, SelStart));
EndPos := AnsiPos('</a>', Copy(Text, StartPos, Length(Text)))+3;
if (StartPos = 0) or (EndPos = 0) then
Exit;
LinkText := Copy(Text,StartPos,EndPos);
TitleStartPos := AnsiPos('title="', LineText)+7;
TitleEndPos := AnsiPos('"', Copy(LineText, AnsiPos('title="', LineText)+7, Length(LinkText)))-1;
Delete(LinkText, TitleStartPos, TitleEndPos);
Insert(NewValue, LinkText, TitleStartPos);
Delete(Result, StartPos, EndPos);
Insert(LinkText, Result, StartPos);
end;
end;
procedure TForm1.SynMemo1Click(Sender: TObject);
begin
Edit1.Text := GetLinkTitle(SynMemo1);
Edit2.Text := GetLinkFilename(SynMemo1)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SynMemo1.Text := SetLinkFilename(SynMemo1, Edit2.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SynMemo1.Text := SetLinkTitle(SynMemo1, Edit1.Text);
end;
end.
Er mon nogen der kan klare dette problem??? For har jeg simpelt hen brugt flere dage på at komme videre - men det er endnu ikke lykkes!!!
Så jeg håber der er en dygtig ekspert der kan klare dette vanskelige problem!!!
Hilsen
Michael
