Avatar billede michaelp1 Nybegynder
18. september 2003 - 20:03 Der er 3 kommentarer og
1 løsning

Identificerer HTML Tag

Identificerer HTML Tag

Hvodan 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
Avatar billede Slettet bruger
18. september 2003 - 20:07 #1
Måske kan det her hjælpe dig:

http://hejhej105.frac.dk/parse.zip
Avatar billede Slettet bruger
18. september 2003 - 20:21 #2
Det var vist samme kode.
Avatar billede Slettet bruger
18. september 2003 - 20:33 #3
Nu skulle der ikke være nogen forskel mellem store og små bogstaver:

http://hejhej105.frac.dk/parse1.zip
Avatar billede michaelp1 Nybegynder
18. september 2003 - 23:37 #4
wow! det ser jo godt ud - vil lige se nærmere på koden. Tusind tak for det!!!
Du har lige sparet mig for et par søvnløse nætter :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging