Übersetzung des Lazarus-Wiki

Für Dinge rund um die Unterstützung des offizielen Lazarusprojekts, wie Übersetzungsabsprachen und anderem.
Antworten
schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Na "fascht",

die ist nur local zu Forms vorhanden. Dafür gibt es aber:

WndProc(var Message...)

nun müssen wir gucken ob wir da ansetzen können. Die existiert hoffentlich nicht nur a la Delphi in den visuellen Objekten, Dann wär's wieder "Arschlecken".

EDIT #1

Es findet sich in Forms:

TApplication.WndProc(var Message: LMessage);

weiterhin implementiert TObject:

Dispatch(var message)
DispatchStr...

Zum ansetzen findet sich in LMessages LM_User, das dürfte der kleinste Wert für eigene Messages sein. Da empfiehlt sich wohl ne eigene Unit MyAppMessages wo man dann in der Form:

Code: Alles auswählen

interface
 
uses
  LMessages, Forms;
 
const
 
LM_MyFirstMsg = LM_User;
LM_MySecondMsg = LM_User + 1;
 
var
  MyApp: TApplication;
 
implementation
 
initialization
  MyApp:= Application;


usf. deklarieren zu können. Dort sollte man vielleicht auch die Variable MyApp deklarieren, wie gezeigt. Da man diese Unit überall dort laden muß wo man eigene Messages deklariert, hat man dann auch den Zugrif auf MyApp.WndProc ohne deswegen gleich überall Forms laden zu müssen.

In TObject ist Dispatch vereinbart, Dispatch verteilt normalerweise die Messages an die entsprechende Prozedur wenn denn eine da ist. Das muß dann auch bei jeder Ableitung von TObject oder später gehen.

Nun müssen wir halt mal sehen, wie man die Message-Procs deklarieren muß. Bei Delphi mußten die public sein wenn ich mich nicht irre. Da findet man aber verschiedene Aussagen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Es gibt in FPC eine Unit "simpleipc" mit inc-Dateien in "WIN32" und "UNIX". die das Senden an die Queue (in Windows mit Windows.SendMessage und in Unix mit einem TFilestream, der anscheinend irgendwie auf eine Pipe umgelenkt ist). Hier wird zusätzlich ein Stream von Daten übertragen.
-Michael

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@mschnell

Laß uns mal den Ansatz wie zuvor beschrieben benutzen. Einfach ein Objekt von TObject ableiten und da einbauen:

Code: Alles auswählen

public
  procedure LMRecMyMessage(var Message: TMessage) message LM_RecMyMessage;


dann einfach nen Timer auf ne Form und im Intervall MyApp.WndProc(MyMsg); auslösen. Dann machste noch eine RecallProzedur in das Objekt die ein Ausgabe-Feld auf dem Form ausgibt. In dem Empfängerobjekt zählst du einfach nen Counter hoch.

Kommt die Message an und die Ausgabe funzt, dann ist das überall verfügbar, also auch in einem Thread.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

was soll denn schon wieder der quatsch mit nem timer der mehrere tick quellen ausgibt das ist in delphi villeicht von vorteil aber nicht in fpc.
warum willst du immer wieder durch den arsch eine hirnoperation tätigen.
ttimer ist die systemnaheste implementation die du bekommen kannst die ist auch von Plattform zu Plattform verschieden eben optimiert auf die Plattform.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Ich habe noch ein wenig 'rumgeschnüffelt.

Sowohl Delphi als auch FPC(Windows) schicken bei TThread.Synchronize eine Windows-Message an den Mainthread, die diesen weckt. Der Mainthread guckt dann in einer selbst gebauten Queue nach, was zu tun ist.

Ich habe ein Testprogrämmchen gemacht und mit Delphi getestet, das die Spezifikationen einer parameterlosen Klassen-Prozedur (Pointer auf den Einsprung und self-Pointer) direkt in eine Windows-Message packt und diese an den Mainthread schickt. Das geht von einem Thread aus, aber natürlich auch an jeder anderen Stelle im Programm. So kann man ohne selbst eine Queue zu bauen reguläre Mainthread-Events erzeugen und so behandeln, wie "onclikc"s behandelt werden (also am Ende eines anderen Events oder bei "Application.ProcessMessages".

Jetzt müsste man das noch auf FP portieren und für Linux usw. bauen.

-Michael

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@Christian

Nicht du das mit der Operationsmethode jetzt im Selbstversuch etwa probierst hast. Der Timer sollte nur dazu dienen regelmäßig den gleichen Event zum Testen auszulösen.

Läuft der Zähler dann sofort alles prima, ansonsten geht man debuggen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nicht du das mit der Operationsmethode jetzt im Selbstversuch etwa probierst hast.

*Lach* *Hust*
naja ok,
dacht halt nur das es wieder um das "timerproblem" geht hat sich so sehr danach angehört.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe noch einen link gefunden denn ich gerne lesen würde aber leider ist komplet in englisch:
http://wiki.lazarus.freepascal.org/Size_Matters
MFG
Michael Springwald

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

pluto hat geschrieben:ich habe noch einen link gefunden denn ich gerne lesen würde aber leider ist komplet in englisch:
http://wiki.lazarus.freepascal.org/Size_Matters


Es müssen tatsächlich noch viele Seiten übersetzt werden. Vielleicht kannst du schonmal deutsche Versionen der Artikel, für die es noch keine deutschen Versionen gibt, anlegen und die zugehörigen Templates erstellen?

Gruß, Euklid

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

gute idee wir können ja dann beim voreischauen immer mal n stück übersetzen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Code: Alles auswählen

n. Vielleicht kannst du schonmal deutsche Versionen der Artikel, für die es noch keine deutschen Versionen gibt, anlegen und die zugehörigen Templates erstellen?

meinst du damit ich soll eine liste mit den seiten erstellen dir mir auffallen und nicht deutsch sind ?
was meisnt du mit "Templates erstellen" ?

evlt. soltlen diese listen soger einen extra treahd bekommen damit jeder der was tuen möchte nicht erst stunden lang selbst suchen muss !
MFG
Michael Springwald

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Wie dir bestimmt schon aufgefallen ist, haben einige Artikel im wiki oben eine Leiste, in der die Sprachen gelistet sind. Wenn ich das richtig verstanden habe, nennt man die Dinger Templates.

Die Übersetzung eines Artikels geschieht in der Regel wie folgt:

Nehmen wir mal an die "http://wiki.lazarus.freepascal.org/test" ist zu übersetzen. Dann muss man wie folgt vorgehen:

1. Eine Seite "http://wiki.lazarus.freepascal.org/test/de" wird angelegt. Zunächst ist das eine Kopie des englischen Originals.

2. Das zur Originalseite gehörende Template wird um die deutsche Sprache erweitert.

3. Die Seite wird übersetzt.

Ich hab selbst erst bestehende Templates erweitert. Unter "Edit" ganz unten ist ein Link dahin (guck z.B. mal hier ganz unten: http://wiki.lazarus.freepascal.org/inde ... ction=edit ) . Kam noch nicht dazu, diese Sprach-Templates völlig neu zu erstellen;

Für die Schritte 1 und 2 braucht man im Prinzip keine Englischkenntnisse. ;)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe gerade gesehen das ich mich da anmelden muss !
Es die anmeldung kostenlos ? (nehme ich mal an)

Wenn ich mich da angemeldet habe kann ich das natürlich machen kein problem
ich sammel alle seiten die noch nicht in deutsch sind(immer zwischen durch)
und erstele dazu ein "Templates" damit "ihr" dann nur noch die seite übersetztnen müsst !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

was heißt auf der anmelde seite: "Remember me" ?
MFG
Michael Springwald

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Templates sind eine Gestaltungsmöglichkeit bei MediaWiki. Im Lazarus Wiki werden sie vor allem dafür verwendet, um auf Übersetzungen der gerade angezeigten Seite hinzuweisen. Dies könnte man grundsätzlich auch ohne Templates machen. Aber spätestens wenn mehrere Übersetzungen vorhanden sind lohnen sich die Templates. Wenn eine englische Seite neu erstellt wird, dann enthält sie idR. kein Template, da es noch keine Übersetzung gibt.
An dieser Stelle möchte ich noch folgendes ansprechen: Wenn eine deutsche Seite ( /de ) neu angelegt wird, dann sollte man noch kurz prüfen, ob andere deutsche Seiten auf die neue Seite verlinken oder noch auf die englische Seite und ggf. die Links anpassen.

knight

Antworten