Autor Beitrag
SunnyDream
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

WinXP
Delphi 7 Personal
BeitragVerfasst: So 04.06.06 11:32 
Hi Liebe Community!
Ich arbeite wie vielleicht der Eine oder Andere schon mitbekommen hat an einem HTML Konverter.
Ich weiss, dass das jetzt nichts Besonderes ist, aber es macht mir Spaß an ihm herumzuschrauben und seine Funktionen ständig zu erweitern. Ausserdem hat es einen nicht zu verachtenden Lerneffekt für mich als Delphi-Neuling.

Mein Problem ist nun folgendes:

Ich möchte, dass die Benutzer meines Konverters Short-Tags verwenden können. z.B. [b]Test[/b].
Jetzt habe ich aber das Problem, dass ich beim besten Willen nicht weiss, wie ich "[b]" abfragen kann.
Mit eine for-to Schleife dürfte das nur schwer möglich sein, da ich ja zB mit Text[i] nur einzelne Buchstaben abfragen kann, ich müsste aber das komplette "[b]" abfragen und auch das "[/b]"....
Ist das irgendwie umsetzbar?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: So 04.06.06 11:42 
Wenn du eine Funktion, wie "Pos" meinst, würde ich dir einen Blick auf meine Website empfehlen. Dort findest du im Tutorial-Bereich eine Übersicht der wichtigsten String-Funktionen mit Erläuterungen und Source-Demo.
SunnyDream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

WinXP
Delphi 7 Personal
BeitragVerfasst: So 04.06.06 11:52 
Ich meine, dass mein Programm ein Shorttag wie zB [b] erkennt, und wenn es dieses Tag erkannt hat die passende Funktion ausführt.
Also konkret: Er soll den eingegebenen Text auf [b] und [/b] überprüfen, findet er ein [b] soll er an dieser Stelle im HTML Code ein <b> ausgeben, findet er ein [/b] das entsprechende </b> ausgeben.
Die Ausgabe o.Ä. sind kein Problem, doch wie schaffe ich es das mein Programm die [b] als Buchstabenfolge erkennt? Ich habe bisher nur Sachen kennen gelernt wie zB:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i:=1 to length(Text) do
 if Text[i] = 'b' then
 begin
  Text[i] := a;
 end


Aber diese einfache Schleife ist wie gesagt nur in der Lage einzelne Buchstaben abzufragen in meinem Fall müsste aber eine Kette von Buchstaben abgefragt werden. Also nicht nur ein Buchstabe sondern "[b]" müsste er erkennen.... Du verstehst?

Moderiert von user profile iconChristian S.: BBCode aktiviert, ein paar Tags eingefügt
Born-to-Frag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1094

Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
BeitragVerfasst: So 04.06.06 11:59 
ausblenden Delphi-Quelltext
1:
StringReplace(aText, '[b]''<b>', [rfReplaceAll]);					


greetz

_________________
Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: So 04.06.06 12:01 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if pos('[b]', Text) > 0 then
begin
  Text[pos('[b]', Text)] := '<';
  Text[pos('[b]', Text)+2] := '>';
end

Das kann man noch besser machen, aber ich will dich nicht mit mehreren String-Funktionen auf einmal erschlagen.
SunnyDream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

WinXP
Delphi 7 Personal
BeitragVerfasst: So 04.06.06 12:03 
Ok Danke!
Ich werde mir dein Tutorial anschauen, da es ja scheinbar das war was ich suchte! Dnake euch :)
Born-to-Frag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1094

Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
BeitragVerfasst: So 04.06.06 12:03 
@jasocul: sollte man das if nicht mit einem while ersetzen?

_________________
Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
SunnyDream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

WinXP
Delphi 7 Personal
BeitragVerfasst: So 04.06.06 12:09 
Ohje... Ich habe noch eine Frage, die hiermit garnichts zu tun hat
Langsam wirds mir schon fast peinlich, seit ich hier angemeldet bin hab ich euch nur mit Neulingsfragen durchlöchert =/

Ich möchte, dass mein HTML-Konverter eine Vorschau-Funktion hat. Also wenn der User auf den Button "Vorschau" klickt, soll die Ausgabe als "temp.html" an einem festgelegten Ort gespeichert werden, ohne dass er dies bestätigen muss. (Also ohne das "Speichern" Fenster). Dann soll die Datei als HTML geöffnet werden und nach beendigung des Programms gelöscht werden.
Wie man etwas speichert weiss ich. Ich habe das bisher mit SaveDialog gemacht, ich weiss sogar wie man den namen der Datei festlegt und auch wie man einen Datei-filter einstellt. Aber ich weiss nicht wie ich es anstellen muss, dass die Datei an einem festen Ort gespeichert wird, ohne dass sich das Speichern Fenster vorher öffnet... Wie man die Datei dann ausführt weiss ich auch nicht =(
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 04.06.06 12:16 
Hallo!

Bitte ertselle für jede neue Frage auch einen neuen Thread. Zum einen wird das innerhalb des Threads immer ziemlich durcheinander, wenn mehrere Fragen drin stecken. Außerdem kann jemand, der mittel Suchfunktion eine Lösung für ein ähnliches Problem sucht, am Titel nicht mehr erkennen, dass der Thread interessant für ihn ist.

Da die ursprüngliche Frage geklärt ist, mache ich hier zu. Sollten dazu noch Nachfragen kommen, reicht eine kurze Nachricht an den virtuellen Ansprechpartner, dann öffnen wir wieder.

Grüße
Christian

//edit: Da doch noch Nachfragen bestehen, habe ich das Thema wieder geöffnet.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
SunnyDream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

WinXP
Delphi 7 Personal
BeitragVerfasst: Mo 05.06.06 16:40 
Hi!
Also bin nun dazu gekommen die Sache umzusetzen.
Jedoch stoße ich auf folgendes Problem, es wird einfach nichts Replaced.
Wie bereits erwähnt will ich in der Variable "RText" alle
ausblenden Quelltext
1:
 [b],[/b],[i],[/i],[u],[/u]					

durch
ausblenden Quelltext
1:
 <b>, </b>, <i> (...)					

ersetzen.

Hier mein Code:

- Funktion um Umlaute etc. zu ersetzen, hier soll auch das Replace von Statten gehen:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
////////////////////////////////////////////////////////////////////////////////////////
//Textbearbeitungs Funktion/////////////////////////////////////////////////////////////
function Tform1.TextBearbeiten(InText: String): String;
 var ascii, i, ib: integer;
 begin
      RText:= '';
      for i:=1 to length(InText) do
          begin
               ascii:= ord(InText[i]);
               case ascii of
                   228: RText:= RText + 'ä' ;
                   196: RText:= RText + 'Ä' ;
                   246: RText:= RText + 'ö' ;
                   214: RText:= RText + 'Ö' ;
                   252: RText:= RText + 'ü' ;
                   220: RText:= RText + 'Ü' ;
                   223: RText:= RText + 'ß' ;
                   13: RText:= RText + chr(13) + chr(10) + '<br' ;
                   10: RText:= RText + '>' + chr(13) + chr(10);
               else
                   RText:= RText + chr(ascii);
            end;

                     StringReplace(RText, '[b]''<b>', [rfReplaceAll]);
                     StringReplace(RText, '[/b]''</b>', [rfReplaceAll]);
                     StringReplace(RText, '[i]''<i>', [rfReplaceAll]);
                     StringReplace(RText, '[/i]''</i>', [rfReplaceAll]);
                     StringReplace(RText, '[u]''<u>', [rfReplaceAll]);
                     StringReplace(RText, '[/u]''</u>', [rfReplaceAll]);

   result:= RText;
  end;
  end;


-Hier wird das Ergebnis der Funktion Textbearbeiten aufgerufen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Konvertieren1Click(Sender: TObject);

begin
     //(...) 
      InText:= MInput.Text;
      OutText:= TextBearbeiten(InText);

    //(...)
   //Hier wird OutText dann ausgegeben:
    with ROutPut.SelAttributes do
             begin
             Color:= clblue;
             end;
        ROutput.Lines.Add(OutText);
  //(...)
end;



Wo liegt mein Fehler?
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mo 05.06.06 16:45 
soweit ich weiß, muss es
ausblenden Delphi-Quelltext
1:
2:
3:
4:
 
...
RText :=  StringReplace(RText, '[b]''[/b]', [rfReplaceAll]);
...
heißen :P
SunnyDream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

WinXP
Delphi 7 Personal
BeitragVerfasst: Mo 05.06.06 16:47 
Jipiee!
Das war's! Danke vielmals!