Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   HighlightParser - PasToHtml (https://www.delphipraxis.net/68604-highlightparser-pastohtml.html)

fwsp 3. Mai 2006 20:10

Re: HighlightParser - PasToHtml
 
to Chewie:
<span> ist allgemeiner und damit nicht falsch, und auch gebräuchlicher. aber danke für den hinweis, dass <pre> nicht mehr aktuell ist, werd ich dann ändern.

to Khabarakh:
okay, ich mach die Welt bunt.

Chewie 3. Mai 2006 20:53

Re: HighlightParser - PasToHtml
 
Zitat:

Zitat von fwsp
<span> ist allgemeiner und damit nicht falsch, und auch gebräuchlicher.

Nicht falsch, aber unlogischer.

Matze 3. Mai 2006 20:59

Re: HighlightParser - PasToHtml
 
<code> ist normalerweise dafür da, um kompletten Code einzukasteln (vgl. [code]-Tags). ;)

@Chewie: Unlogisch ist es, wenn kleine Abschnitte von <code> eigefasst sind und andere nicht, auch wenn diese zum Code gehören.

Chewie 3. Mai 2006 21:36

Re: HighlightParser - PasToHtml
 
Zitat:

Zitat von Matze
<code> ist normalerweise dafür da, um kompletten Code einzukasteln (vgl. [code]-Tags). ;)

@Chewie: Unlogisch ist es, wenn kleine Abschnitte von <code> eigefasst sind und andere nicht, auch wenn diese zum Code gehören.

Hm, ja, man sollte schon konsistent sein. Also <code> mit verschiedenen Klassen oder IDs.
Aber ich muss zugeben, ich hab mir die Ausgabe des Programms nicht angesehen, das war nur allgemein bezogen. Ich finde halt, wenn es schon semantische Tags gibt, dass man diese auch benutzen sollte, und nicht nur <span> und dann alles mit CSS formatieren. Bis auf Bilder und Formular-Elemente bekommt damit nämlich so gut wie alles hin ;)

fwsp 4. Mai 2006 19:49

Re: HighlightParser - PasToHtml
 
Neue Version:
  • Es gibt jetzt ne Vorschau
  • Die Speicheroptionen sind in diesem Zusammenhang sicherheitshalber auch mal überarbeitet
  • Luna ist jetzt da

Ich hab mal in SelfHTML geguckt, was da zu <pre> steht und da stand eigentlich nichts zu 'Bloß nicht mehr verwenden'. Welche Alternative gibt es denn zu <pre>? Ist <pre> schon vom Aussterben bedroht?

Nicodius 4. Mai 2006 20:50

Re: HighlightParser - PasToHtml
 
Zitat:

---------------------------
HighlightParser - fwsp
---------------------------
Zugriffsverletzung bei Adresse 0045F967 in Modul 'HighlightParser.exe'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------

hab ich bei nem code bekommen :(


aber preview vom startcode ging =)


hübsch schauts so aus ;)

fwsp 4. Mai 2006 20:52

Re: HighlightParser - PasToHtml
 
kannst du mir vielleicht den code geben, damit ich gucken kann wo der fehler ist?

Nicodius 4. Mai 2006 20:53

Re: HighlightParser - PasToHtml
 
mir ist nochwas aufgefallen

ich hab ein projekt wo am anfang viele geschweife kommentare sind halt

und dann ist der restliche queslltext grün also kommentiert .. ? den kann ich dir leidern icht schicken weils n riesen projekt ist :( - aber glaube dass du vl nochmal das mit den klammern überschaun solltest?


und bei diesem code wird sogar garn ichts codiert - (eben oben alles rausgeschmissen zum testen)

Delphi-Quellcode:
unit EHTML;

interface

uses
  Windows, Messages, SysUtils, Graphics, Controls, Forms,
  ComCtrls, Menus, ShellAPI,IdGlobal,
  Registry, Classes, AppEvnts, StdCtrls, ExtCtrls, Dialogs;

const
  IC_CLICK = WM_APP + 201; // Für die Taskleiste

procedure TForm1.Timer3Timer(Sender: TObject);
begin
// Wenn highliten eingestellt ist
// wird dieser timemr kurz aktiv
// um alles ohne veränderung der Cursorposition
// einzufärben
  HTMLSyntax(Text, Color1, Color2, Color3, Style);
  Text.CaretPos := Point(0, 5);
  Timer3.enabled := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
var text1: string;
  i, e: Integer;
begin
// Caption errechnen
  text1 := '';
  for i := 1 to Text.Lines.Count do
    if Pos('<title>', lowercase(Text.Lines.Strings[i])) > 0 then
    begin
      for e := 8 to Pos('</title>', lowercase(Text.Lines.Strings[i])) - 1 do
        text1 := text1 + Text.Lines.Strings[i][e];
      break; // Verlassen der Schleife
    end;
  Form5.Caption := text1;
// Vorschaugenerierung
  Inc(VWert);
  if FileExists(ExtractFilePath(ParamStr(0)) + 'Vorschau\')
    then
  begin
    Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Vorschau\' + 'Vorschau' + IntToStr(VWert) + '.html');
    Form5.Look.Navigate(ExtractFilePath(ParamStr(0)) + 'Vorschau\' + 'Vorschau' + IntToStr(VWert) + '.html');
    Form5.Visible := false;
    Form5.Visible := true;
  end
  else
  begin
    ForceDirectories(ExtractFilePath(ParamStr(0)) + 'Vorschau\');
    Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Vorschau\' + 'Vorschau' + IntToStr(VWert) + '.html');
    Form5.Look.Navigate(ExtractFilePath(ParamStr(0)) + 'Vorschau\' + 'Vorschau' + IntToStr(VWert) + '.html');
    Form5.Visible := false;
    Form5.Visible := true;
  end;
end;

procedure TForm1.Help2Click(Sender: TObject);
begin
// Hilfedatei wird geöffnet
  ShellExecute(Handle, nil, pChar(ExtractFilePath(ParamStr(0)) + '\Help\Help.htm'), nil, nil, SW_SHOW);
end;

procedure TForm1.Colorsettings1Click(Sender: TObject);
begin
// EH-Eigenschaften Fenster erhält den Fokus und
// der Timer von Form6 wird aktiviert
// um das vorschaufenster sofort zu aktualisieren
  Form6.visible := false;
  Form6.visible := true;
  Form6.Timer1.Enabled := true;
end;

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  //Vorgang: Minimieren der Anwendung, Entfernung des Taskleisteneintrags
  //und Hinzufügen des Programmicons neben der Uhr
  Form1.Visible := false;
  Form1.FormStyle := fsstayonTop;
  //Hide;
  with NIM do begin
    cbSize := SizeOf(nIM);
    Wnd := Handle;
    uID := 0;
    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    uCallbackMessage := IC_CLICK;
    hIcon := Application.Icon.Handle;
    szTip := 'EASY HTML';
  end;
  Shell_NotifyIcon(NIM_ADD, @NIM);
end;

procedure TForm1.Systray(var sMsg: TMessage);
begin
  // Vorgang: Klick auf das Icon neben der Uhr und Anzeige der Anwendung
  inherited;
  if (sMsg.LParam = WM_LBUTTONDOWN) then begin
    Show;
    Shell_NotifyIcon(NIM_DELETE, @NIM);
    Application.Restore; //zeigt die Anwendung wieder an
    Form1.Visible := true;
    Form2.FormStyle := fsstayonTop;
    Form3.FormStyle := fsstayonTop;
    Form4.FormStyle := fsstayonTop;
    Form1.Visible := true;
    Form1.FormStyle := fsstayontop;
  end;
end;

function TForm1.InstallExt(Extension, ExtDescription, FileDescription,
  OpenWith, ParamString: string; IconIndex: Integer): Boolean;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    with Reg do
    begin
      RootKey := HKEY_CLASSES_ROOT;
      OpenKey(Extension, True);
      WriteString('', ExtDescription);
      OpenKey('\' + ExtDescription, True);
      WriteString('', FileDescription);
      OpenKey('DefaultIcon', True);
      WriteString('', OpenWith + ',' + IntToStr(IconIndex));
      OpenKey('\' + ExtDescription + '\Shell\Open\Command', True);
      WriteString('', '"' + OpenWith + '" "' + ParamString + '"');
    end;
    Result := True;
  except
    Result := False;
  end;
  Reg.Free;
end;

function TForm1.UnInstallExt(Extension, ExtDescription: string): Boolean;
var
  Reg: TRegistry;
begin
  // Keys wieder weggeben
  Reg := TRegistry.Create;
  try
    with Reg do
    begin
      RootKey := HKEY_CLASSES_ROOT;
      DeleteKey(Extension);
      DeleteKey('\' + ExtDescription);
    end;
    Result := True;
  except
    Result := False;
  end;
  // Reg freimachen
  Reg.Free;
end;

procedure TForm1.MAIL1Click(Sender: TObject);
begin
// Supportanfrage kann gesendet werden
  ShellExecute(Application.Handle, 'open',
    PChar('mailto:s.mueller@inode.at?subject=EASY HTML&body=Hier bitte ihre Fragen/Anregungen schreiben                                    Please write here your Questions and ideas'), nil, nil, sw_ShowNormal);
end;

procedure TForm1.Projectsetting1Click(Sender: TObject);
begin
// Projekt optionen werden aufgerufen
  Form2.Visible := false;
  Form2.Visible := true;
end;

procedure TForm1.Deutsch1Click(Sender: TObject);
begin
// Sprachenumstellung (jetzt eigentlich unnötig!)
  if Wert = true then ChangeSpeak('Deutsch')
  else
    ChangeSpeak('Englisch');
end;

procedure TForm1.Save;
begin
// Normale Speicherung
// Wie sie funktioniert wird in Save & Compile beschrieben
  Memo1.Lines := Text.Lines;
  Number := 1;
  if FileExists(ExtractFilePath(ParamStr(0)) + '\Projects\' + Panel1.caption + '\Number.txt') then
  begin
    Memo1.lines.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\Projects\' + Panel1.caption + '\Number.txt');
    Number := StrToInt(Memo1.Text);
    memo1.lines.Clear;
  end;
  Memo1.lines := Text.Lines;
  if (Panel1.caption <> 'NO NAME       Please change the name of the Site') and (Panel1.caption <> 'KEIN NAME    Bitte ändern Sie die Projekteinstellungen') then
  begin
    if Unregistred then
    begin
      Memo1.Lines.Add('

 </p>');
      Memo1.Lines.Add('[b] <font Color = "Maroon"> made with EASY HTML by Nico Müller, TSA 2004 </font> [/b]');
    end;
    ForceDirectories(ExtractFilePath(ParamStr(0)) + '\Projects\' + Panel1.caption);
    Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + '\Projects\' + Panel1.caption + '\Site' + IntToStr(Number) + '.html');
    if Pos('.EHt', Savedialog1.FileName) > 0
      then
      Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + '\Projects\' + Panel1.caption + '\Data.EHt')
    else
      Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + '\Projects\' + Panel1.caption + '\Data.EHt');
    memo1.lines.Clear;
    Inc(Number);
    memo1.text := IntToStr(Number);
    Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + '\Projects\' + Panel1.caption + '\Number.txt');
  end else
    if Form2.Caption = 'Project settings' then
      Showmessage('PLEASE CHANGE THE PROJECT SETTINGS(press F2)')
    else
      Showmessage('BITTE ÄNDERN SIE DIE PROJEKTEINSTELLUNGEN(F2 drücken)');
end;

procedure TForm1.TextMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  VorschauOk := true;
end;

procedure TForm1.TextKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in shift) and ((key = 90) or (key = 122)) then
  begin
    PostMessage(GetFocus,WM_UNDO,0,0);
  end;
end;

end.

//---------TODO-----------------------|
// --> FARBMIXER                     |
// Französische Buttons mit & Zeichen!|
// Messages auf allen Sprachen!       |
// rechtsklick neue EHT datei!        |
// Minimieren                        |
//------------------------------------|

//------------------------
// Gesamt:~>2000 Codezeilen


// ZEILE 342!!!!!!!!!
        // 249!!!!

dahead 4. Mai 2006 21:14

Re: HighlightParser - PasToHtml
 
@threadsteller:

dein projekt hört sich ganz interessant an, allerdings vermisse ich einen screenshot und eine beispiel-html datei. falls du das (oder jemand anderes) online stellen könnte, wäre ich beinahe geneigt einen blick auf das programm zu werfen.

vielen dank!

fwsp 4. Mai 2006 23:37

Re: HighlightParser - PasToHtml
 
so, ne beispieldatei hab ich grad hochgeladen. den fehler den nicodius hatte ist schon ausgemerzt, die kommentare guck ich mir morgen dann an.
ich halte mich beim coden sehr an den style guide von dsdt.info und es scheint, dass das programm schwierigkeiten kriegt, wenn der code nicht so formatiert ist.

Ein anderes problem ist, wenn mehrere male hintereinander code formatiert wird, dann gibt es fehler, muss ich mir noch mal angucken.

To Nicodius: hab den code den du da gepostet hast durch das programm gejagt und er hat es formatiert. guck mal ob es nach einem neustart funktioniert. wird dann in der nächsten version verbessert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr.
Seite 2 von 3     12 3      

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