Autor Beitrag
ripper8472
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 114

Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 114

Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)

BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 114

Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)

BeitragVerfasst: 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



BeitragVerfasst: Mi 14.05.03 17:09 
ripper8472 hat folgendes geschrieben:
das programm hat keinen brauchbaren pas code

Bitte wie? :shock: Der Code scheint aber so brauchbar zu sein, dass ihn der Kompiler und Linker versteht und die Anwendung das macht, was ich will.
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: 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



BeitragVerfasst: Mi 14.05.03 17:49 
Gelesen habe ich "Gedöns", aber gnädigerweise habe ich "Overhead" gedacht. :wink:

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 114

Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Do 15.05.03 14:03 
NonVcl Programme haben viel Code auch in DPR Dateien.

_________________
Popov
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.