Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 20, 2025 00:26

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 50 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 23, 2008 15:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wegen XML: Wenn du nichts eigenes schreiben willst, kannst du dir mal libxml2 anschauen. Das ist wohl die mächtigste XML-Bibliothek, die man finden kann. Dort werden nicht nur die Dateien gelesen sondern auch als Binärbaum aufbereitet und in UTF-8 konvertiert, sodass du dir darum auch nicht unbedingt gedanken machen musst (wenn dir UTF-8 nicht passt, der FPC hat da umwandlungsroutinen).
Der Header und die DLL finden sich im DGLSDK (aktuelle versionen auf xmlsoft.org).

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 23, 2008 18:38 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Vielen Dank ! Ich werde mir das aufjedenfall mal ansehen.

Ich weiß aber das Lazarus sowas von sich aus mitbringt. Damit habe ich auch schon die eine oder andere XML Datei gelesen.
Ich kann mich nur noch nicht für eine Interne Datenstruktur entscheiden.

Sollte ich die Infos Direkt aus dem XML Baum lesen und verarbeiten ?
Z.B. Ich brauche eine Liste alle Schlüsselwörter die die jeweilige Sprache eben hat, angenommen der Pfad ist immer der gleiche z.b.
xml\Schlüsselwörter\
Dann müsste ich ja erstmal xml suchen und dann das Wort Schlüsselwörter

Das ist jetzt nur ein Beispiel Pfad. Darum dachte ich mir es währe bestimmt besser und schneller, wenn ich die XML Daten in eine für mich leichtere Struktur bringe !

Da ich ja beim Zeichnen Schauen muss, um was es sich handelt ob es jetzt ein Schlüsselwort oder
was auch immer ist. Ich denke selbst bei 100 Schlüsselwörtern dürfte das suchen in der Liste schnell genug sein um das ständig zu machen.
Solange es sich um eine Liste handelt.

Der Rest ist einfacher, da es ja noch Strings, Zahlen und sowas gibt.

Ich spiele auch mit den Gedanken, Proceduren und Funktions Anfänge zu kennzeichnen. z.b. zu unterstreichen.

Das währe evlt. eine Orientierungshilfe !
Ich hoffe ihr wisst was ich meine.

Im Moment habe ich noch kleine Problem damit, das Wort unter dem Cursor zu ersetzten. Durch ein anders Word.
Danach wollte ich das Gatter überarbeiten.

Aber, wenn ihr lust und Zeit habt, können wir ja über die XML Struktur etwas genauer sprechen. Bisher habe ich das auch nicht gerade oft gemacht.
Z.B. geschrieben habe ich XML auch noch nie.
Ich würde auch viel lieber ini Dateien lesen und schreiben, da es einfacher ist. Aber ich möchte die Dateien jetzt auch nicht zu INI umwandeln. das währe ja unpraktisch !

In Einigen der XML Dateien werden zu den Sprachen auch ein Beispiel Soruce gezeigt. Leider nicht in allen.
Daher müsste ich auch prüfen ob es den Pfad auch gibt.

Wie würdet ihr denn eine etwas komplexere XML Datei auslesen ?
Ich hänge einfach mal eine dran.
Von Pascal gibt es gleich Drei Dateien:
Delphi,
Pascal
Pascal (Turbo)

Mein

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 22, 2008 14:39 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Nach einigen Umstellungen im Gatter habe ich ein kleines Problem bei den Sprungmarken wenn ich scrolle. Erstmal die Technik:

jede Gatter-Celle kann anders aussehen. Das Gatter verfügt über eine Style Liste.
In diese Liste kann ein Muster eingefügt werden z.b.:

1 Gatter Eintrag:
1 Celle: Hintergrund Grün
2 Celle: Hintergrund Blau
3 Celle:Hintergrund Lilia

2 Gatter Eintrag:
1 Celle: Hintergrund Rot
2 Celle: Hintergrund Schwarz
3 Celle:Hintergrund Weiß

Wenn eine neue Zeile erstellt wird, wird innerhalb das gatter dieses Muster wiederholt. z.b. ich habe 20 Text Zeilen, würde das
Gatter so aussehen:
1
2
1
2
1
2
1
2
und soweiter

Ich hoffe das Prinzip ist soweit klar.

Die Gatter Einträge selbst werden in einer extra Liste gespeichert. So spare ich speicher, bei großen Soruce-Code Dateien. Hoffe ich.

Die Zeilen-Indexe kann ich Prima anzeigen lassen mit hilfe dieser Procedure:

Code:
  1. ----
  2.   for i:=FirstLine to Count-1 do begin
  3.       fTextBuffer.LineList[i].y:=py;
  4.       fTextBuffer.LineList[i].h:=LineHeight;
  5.       if Gatter.Visible then begin
  6.         Gatter.GatterItem[i2].GatterItem[2].Text:=IntTostr(i);
  7.         Gatter.GatterItem[i2].GatterItem[2].Width:=pw3;
  8.         Gatter.GatterItem[i2].GatterItem[2].Paint;
  9.       end; // Gatter.Visible
  10.      
  11.       if i2+1 <= Gatter.fGatterItemList.Count-1 then
  12.       fTextBuffer.LineList[i].DrawIndex:=i2;
  13.       i2:=i2+1;
  14.   ...
  15.  

Allerdings habe ich jetzt Probleme bei den Sprungmarken. Die zeichne ich in einer anderen Methode so:
Code:
  1.   // Sprungmarken werden gezeichnet, wenn vorhanden
  2.     if (aLineIndex >-1) then begin
  3.       if Assigned(fTextBuffer.Objects[aLineIndex]) then begin
  4.         if (aLineIndex >=FirstLine) and (aLineIndex <=LastLine+1) then begin
  5.           f:=Integer(fTextBuffer.Objects[aLineIndex]); // Die Sprungmarke
  6.           kl:=fTextBuffer.LineList[aLineIndex].DrawIndex; // Der Index in der Gatter Liste
  7.           if (f > -1) then begin
  8.             Gatter.GatterItem[kl].GatterItem[1].Text:=IntTostr(f);
  9.             Gatter.GatterItem[kl].GatterItem[1].Paint;
  10.           end
  11.           else begin
  12.             if Gatter.GatterItem[kl].GatterItem[1].Text <> '' then begin
  13.               Gatter.GatterItem[kl].GatterItem[1].Text:='';
  14.               Gatter.GatterItem[kl].GatterItem[1].Paint;
  15.             end;
  16.           end;
  17.         end;
  18.       end;
  19.     end;
  20.  
  21.  
Beim Scrollen wirderholen sich die Sprungmarken zahlen. Ich habe z.b. eine Sprungmarke gesetzt wiederholen sie sich.
Ich vermute das liegt in diesen Code Abschnitt die Ursache.
Ich glaube es würde gehen, wenn es mir gelinkt den DrawIndex zu berechnen. Also kl.

Wie schon erwähnt: Die Gatter-Einträge sind in einer Extra Liste gespeichert.
Ich hoffe einer von euch hat das Problem verstanden und kann mir weiter Helfen. Zur Zeit habe ich keine Brauchbare Lösung, außer diesen Teil in die Paint Methode zu verschieben. Aber dann müsste ich das Gatter Jedes Mal neu zeichnen, wenn ich eine Sprungmarke setzte.

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 06, 2009 23:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Hier ist der versprochene Programm-Code.
Traude


Dateianhänge:
TextViewer.zip [7.13 KiB]
357-mal heruntergeladen
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 07, 2009 17:46 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Vielen Dank, Traude.... dein Letzter Code hat mir ja sehr weiter geholfen, ich hoffe der hilft mir auch weiter *G*..... macht ein guten eindruck. Allerdings verwendest du nur eine Schrift Größe pro Zeile.... ich hoffe ich kann das anpassen.

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 50 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]