| Autor |
Beitrag |
ripper8472
      
Beiträge: 114
Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)
|
Verfasst: Di 13.05.03 15:48
Hallo!
Ich habe vor, eine "AutoVervollständigung" für beliebige Programme zu schreiben. Dazu benötige ich noch folgendes:
1. Handle das aktiven Controls
2. rausfinden des Typs des controls (genauer: ob es eine art edit oder memo ist, was man bearbeiten kann)
3. zugriff auf den text und seine markierung (pos,len)
4. evtl. noch die koordinaten des edits (global), damit ich n kleines fenster aufpoppen lasen kann
die wortliste wird automatisch erstellt (beim tippen)
thx für jede hilfe[/list]
_________________ char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\xce\xfc",I,*i=l-1;for(;I=3,*
i++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
|
|
Ex0rzist
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: Mi 14.05.03 14:13
Hallo,
bei Luckie findest du ein Programm namens "WindowInfo". Das solltest du dir mal anschauen.
_________________ If accidentally read, induce vomitting.
|
|
ripper8472 
      
Beiträge: 114
Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)
|
Verfasst: Mi 14.05.03 16:50
thx für den verweis. werd ich "ausschlachten"
ich meld mich morgen wieder...
_________________ char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\xce\xfc",I,*i=l-1;for(;I=3,*
i++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
|
|
ripper8472 
      
Beiträge: 114
Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)
|
Verfasst: Mi 14.05.03 16:59
das programm hat keinen brauchbaren pas code
bekomm ich diese funktionen sonst noch wo her?
aber trotzdem danke, die seite ist ne echte fundgrube!
_________________ char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\xce\xfc",I,*i=l-1;for(;I=3,*
i++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 14.05.03 17:09
| ripper8472 hat folgendes geschrieben: | | das programm hat keinen brauchbaren pas code |
Bitte wie?  Der Code scheint aber so brauchbar zu sein, dass ihn der Kompiler und Linker versteht und die Anwendung das macht, was ich will.
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Mi 14.05.03 17:31
Luckie, deine nonVcl Tools sind gut und ausgearbeitet. Allerdings kommt durch das nonVcl Gedöns soviel zusätzliches Zeug zusammen, daß sich einige das garnicht antun wollen den Code zu analisieren. Bevor man das vesentliche erkennt, muß man zuerst den "normalen" Code von dem "extra nonVcl" Code trennen. Inzwischen sehe ich das auch nicht mehr so wild, aber wenn ich die möglichkeit bekomme das gleiche Programm als Vcl und ein mal als nonVcl zu studieren, dann ist das Vcl Programm immer noch die erste Wahl. Was interresieren micht die X-Extra Zeilen die sich nur mit den Messages des nonVcl Codes beschäftigen. Ich schätze, daß sich eine Neuling ein nonVcl erst garnicht antun wird. Der blickt da kaum durch was wichtig und was "unwichtig" ist.
_________________ Popov
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 14.05.03 17:49
Gelesen habe ich "Gedöns", aber gnädigerweise habe ich "Overhead" gedacht.
Stimmt schon klar, aber ich versuche den Fenstercode (Oder in Popov-Sprache: Gedöns) vom funktionale Code zu trennen und dann sollte es auch jemanden, der nicht so bewandert in der Programmierung ohne VCL ist, damit klar kommen.
|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Mi 14.05.03 18:02
Hi,
| Zitat: | | 1. Handle das aktiven Controls |
GetFocus() ermittelt dir das Handle das Controls mit Fokus.
AttachThreadInput nicht vergessen!
| Zitat: | | 2. rausfinden des Typs des controls (genauer: ob es eine art edit oder memo ist, was man bearbeiten kann) |
Z.B mit der GetWindowInfo() API.
| Zitat: | | 3. zugriff auf den text und seine markierung (pos,len) |
Nachrichten schicken. WM_GETTEXT, EM_GETSEL
| Zitat: | | 4. evtl. noch die koordinaten des edits (global), damit ich n kleines fenster aufpoppen lasen kann |
GetWindowRect() API.
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Mi 14.05.03 18:32
@Luckie
Ich hab jetzt nicht nur deine nonVcl Codes gemeint, sondern auch ander Anbieter. Da gibt es auch welche, wo man derart zwischen den Dateien (und etlichen Includes) springen muß, daß einem die Lust vergeht.
_________________ Popov
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 14.05.03 20:12
Dieses "Springen" ist aber notwendig, wenn man den Code sauber trennen will. Ich z.B. schreibe meist auch erst mal alles in ein Programm. Sobald ich aber auf Funktionen stoße, die ich häufiger brauche, lagere ich sie aus. Immerhin ist das das Grundkonzept von Pascal respektive Delphi.
Logischerweise sammeln sich dann häufig benutzte Funktionen in einer Unit oder Include-Datei, die kurzerhand eingebunden wird anstelle den Code noch mal zu schreiben. Ich sehe da nichts Ungewöhnliches.
Aber recht hast du: für Anfänger bzw. Nicht-NonVCL-Interessierte diese Art der Programmierung schwer zu verstehen und zu lesen. Denn machen wir uns nichts vor: sie ist rückständig im Vergleich zu Objekten und Co.
|
|
ripper8472 
      
Beiträge: 114
Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)
|
Verfasst: Do 15.05.03 09:54
thx toms!
werd ich sofort ausprobieren!
noch was: ich glaube mich erinnern zu können, dass getfocus das element ermittelt das auf meiner form den focus hat, aber nicht das, was systemweit den focus hat. wie ist das?
wie kann ich diese botschaften abschicken, hab sowas noch nicht gemacht.
ich hab ja mit pascal angefangen und das prägt.
thx
ps: nonVCL: ich suche nach pascal code nur in .pas dateien und die einzige pas datei in dem pack hatte grademal ne hand voll funktionen die irgendwas reproduzieren, was delphi (mit vcl) ohnehin schon hat.
das wollt ich nur noch loswerden
_________________ char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\xce\xfc",I,*i=l-1;for(;I=3,*
i++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Do 15.05.03 14:03
NonVcl Programme haben viel Code auch in DPR Dateien.
_________________ Popov
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 15.05.03 18:33
| Popov hat folgendes geschrieben: | | NonVcl Programme haben viel Code auch in DPR Dateien. |
"Viel" ist gut. Es steht eben die Nachrichtenschleife im Hauptprogramm und das Hauptprogramm ist auch bei der VCL in der dpr-Datei, nur das scheinen die wenigsten zu wissen, weil sie sich nicht mit den Grundlagen beschäftigen.
|
|