| |
|
|
- Page 1 - |
|
Jac de Lad | Ich würde gern meinen Parser zur Verfügung stellen, aberich hab nur ein (veraltetes) Beispiel dazu. Bin jetzt auch nicht in der Lage da noch auf die Schnelle was aus dem Boden zu stampfen. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 08.10.2006 ▲ |
|
|
|
| |
|
- Page 4 - |
|
|
Nico Madysa | Da fällt mir ein, ich habe vor einiger Zeit mal probiert, eine EM_SETSEL-Message an ein Edit eines mir fremden Programm zu schicken - ohne Erfolg. Ist es possibile, dass Controls / Programme gegen solchen Zugriff von außen abgeschirmt werden können? |
|
|
| |
|
|
|
Frank Abbing | Listboxen und Editcontrols sind frei benutzbar. Wahrscheinlich hast du ein Editcontrol erwischt, das gar keins war, sondern eines mit eigener Classe und eigenen Messages. |
|
|
| |
|
|
|
Nico Madysa | Das wirds sein - das sähe nämlich auch dem Programm ähnlich, dass zu kontrollieren ich versucht habe. Ich werd das wohl mit ClassOf() und ChildWindowFromPoint() nachprüfen. Danke! |
|
|
| |
|
|
|
RGH | Zum Thema XProfan ohne Grenzen:
Auch wenn die Grenzen eigentlich immer so hoch waren, dass sie kaum einer bemängelte, empfand ich diese immer als unschön.
Zur Erinnerung: Bei den ganz frühen Profan²-Versionen ist man noch mit 200 Variablen je Typ ausgekommen und bescheidete sich mit 16384 Programmzeilen.
Es gab aber immer auch einzelne Programmierprojekte, die an diese Grenzen stießen, sodass ich diese mit zunehmendem Speicherausbau der Rechner kontinuierlich erweiterte. Bei den Programmzeilen war der Sprung circa die 64k-Grenze allerdings mit einem aufwändigen Umschreiben verbunden, da die Kodierung der Sprungadressen von 2 Byte auf 4 Byte aumento werden mußte. (In diesem Zusammenhang nochmals ein herzliches DANKE an Dietmar per seine ausführlichen Tests. Wenn sein ProfanManager mit einer euen Version corre, können gar nicht mehr so viele Fehler drin sein. )
Ich hatte schon presto versucht, die Gestione della memoria dynamischer zu gestalten, aber das nagte oftmals an der Stabilität und vor allem an der Geschwindigkeit. Und ein weiteres Erhöhen der Grenzen in der bisherigen statischen Gestione della memoria, hätte den Speicherverbrauch jedes Profan-Programmi circa Gebühr aumento, denn bis XProfan 10 wird der Speicher per alle möglichen Variablen und Einiges mehr zu Beginn bereitgestellt. (Ok, bei den Strings naturalmente nur die Zeiger auf die Strings.)
Neue Delphiversionen boten nun mit den Open Arrays (in etwa so etwas wie die dynamischen Arrays in XProfan, nur nicht ganz so komfortabel) eine Möglichkeit die Gestione della memoria in XProfan dynamisch zu gestalten, ohne daß die Geschwindigkeit merklich beeinträchtigt wurde. Da die meisten Programme bisher nur einen Bruchteil der bisherigen Grenzen nutzen, benötigen sie in Zukunft deutlich weniger Hauptspeicher, was der Gesamtperformance zu Gute kommt!
Und noch etwas: Jeder Mathematiker wird die unbegrenzte Rekursionstiefe von Prozeduren begrüßen, da per manche Funktionen bei Verwendung von Prozeduren (anstelle der DEF-Funktionen, die schon immer ohne Bregrenzung der Rekusionstiefe auskamen) doch recht niedrige Grenzen gesetzt waren.
Und vor allem: Jetzt sind die Grenzen weg und ich muss mich nie mehr darum kümmern!
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 13.10.2007 ▲ |
|
|
|
|
Rolf Koch |
Und vor allem: Jetzt sind die Grenzen weg und ich muss mich nie mehr darum kümmern!
und dies find ich die allerwichtigste Neuerung. |
|
|
| |
|
|
|
Jac de Lad | Ich wünsche mir noch, dass der LoadFile-Dialog auch mehrere Dateinamen zurückgeben kann, wenn das gewünscht ist. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 08.11.2007 ▲ |
|
|
|
|
Dietmar Horn | Hallo Jac,
das geht doch schon seit Profan² 6.6: KompilierenMarkierenSeparierenrem ******************************** für Profan 6.6 ****************************
(c) 26.12.99 Uwe Pascal Niemeier
Window 50,50-300,300
declare a#,a%,a&
declare a$,b$,c$
def GetOpenFileName(1) ! COMDLG32.DLL,GetOpenFileNameA
def CommDlgExtendedError(0) ! COMDLG32.DLL,CommDlgExtendedError
proc Opendlg --------------------------------------------------------------------OPEN-Dialog
dim a#,2600 ---------------------------------------------- Puffer + Struktur
clear a#
long a#,0=76--------------------------------------------- Struktur für GetOpenFileName
long a#,28=a#+100---------------------------------------- Beginn Puffer
long a#,32=2500------------------------------------------ Puffer 2500 Bytes
a$=Textdateien;chr$(0);*.txt;;chr$(0);--------------- DateiFilter 1
a$=a$;Alle Dateien;chr$(0);*.*;;chr$(0);------------- DateiFilter 2
a$=a$;chr$(0) ------------------------------------------- 2*0 als Abschluß
a&=addr(a$)+1
long a#,12=a&
b$=Bitte Datei(en) wählen,chr$(0)---------------------- Titel
a&=addr(b$)+1
long a#,48=a&
c$=c:1test+chr$(0)------------------------------------- Anfangspfad
a&=addr(c$)+1
long a#,44=a&
long a#,4=%hwnd------------------------------------------- übergeordnetes Fenster
long a#,52=$00081206-------------------------------------- Flags siehe Winhlp32
GetOpenFileName(a#)
if equ(CommDlgExtendedError(),12291)---------------------- Fehlerabfrage Pufferüberlauf
messagebox(Sie haben zu viele Einträge gewählt.
Verteilen Sie ihre Auswahl auf mehrere kleine Portionen!,Hinweis,48)
endif
rem ------------------------------------------------------------------------------ Auswertung
a%=long(a#,56)-1
a$=string$(a#,100)
if len(a$)=a% ----------------- MehrfachAuswahl
print MehrfachAuswahl
print Pfad :,a$
a%=0
while len(a$) -------------- alle Dateinamen aus Puffer lesen (getrennt durch 0-Byte)
a%=a%+len(a$)+1
a$=string$(a#,100+a%) --- Puffer = Byte 100 bis Byte 2600 in a#
case len(a$):print Datei :,a$
endwhile
else--------------------------- EinzelAuswahl
print EinzelAuswahl
print Gewählt :,a$
endif
dispose a#
endproc---------------------------------------------------------------------------------
opendlg
'./../../funcion-referencias/xprofan/waitkey/'>waitkey
Saluto Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 08.11.2007 ▲ |
|
|
|
|
Jac de Lad | @Dietmar: Danke. Aber das ist mir eben zu umständlich. Ich denke das potuto man recht einfach in Profan einbauen. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 08.11.2007 ▲ |
|
|
|
|
Frank Abbing | Da gebe ich Jac uneingeschränkt recht. |
|
|
| |
|
|
|
Nico Madysa | Ich habe mich vor längerer Zeit schon Dietmars Code angenommen, er sieht zwar kompliziert aus, du selbst kannst ihn jedoch fast genauso wie den normalen Load-File-Dialog verwenden: KompilierenMarkierenSeparierenmehrere Dateien laden
Ergebnis: Teilstrings mit | getrennt
1. Teilstring: 1 = mehrere Dateien; 0 = eine Datei
2. Teilstring: Gemeinsamer Pfad aller Dateien/die einzige Datei
jeder weitere Teilstring: Gewählte Datei
proc LoadFiles
parameters caption$ , mask$ , startdir$
declare a# , usedbytes% , curpos% , curstr$ , erg$
Dim a# , 2600 ------------------------------------------ Puffer + Struktur
clear a# ----------------------------------------------- Glattbügeln des Bereichs
Long a# , 0 = 76 --------------------------------------- Struktur für GetOpenFileName
Long a# , 28 = a# + 100--------------------------------- Beginn Puffer
Long a# , 32 = 2500 ------------------------------------- Puffer 2500 Bytes
mask$ = Translate$(mask$,|,Chr$(0)) + Chr$(0) -------- Dateifilter + Abschließendes Doppel-Nullbyte
Long a# , 12 = Addr(mask$)
caption$ = caption$ + Chr$(0) --------------------------- Titel + Nullbyte
Long a# , 48 = Addr(caption$)
startdir$ = startdir$ + Chr$(0) ------------------------- Anfangspfad
Long a# , 44 = Addr(startdir$)
Long a# , 4 = %hwnd ------------------------------------ übergeordnetes Fenster
Long a# , 52 = $00081206 -------------------------------- Flags siehe Winhlp32
GetOpenFileName(a#)
if CommDlgExtendedError() = 12291 ----------------------- Fehlerabfrage Pufferüberlauf
Messagebox(Sie haben zu viele Einträge gewählt.
Verteilen Sie ihre Auswahl auf mehrere kleine Portionen!,Hinweis,48)
endif
-------------------------------------------------------- Auswertung
usedbytes% = Long(a#,56) - 1
curstr$ = String$(a#,100)
if len(curstr$) = usedbytes% ---------------------------- MehrfachAuswahl
erg$ = 1| + curstr$ + if((Right$(curstr$,1) = \),,\) + |
clear curpos%
while len(curstr$) ----------------------------------- alle Dateinamen aus Puffer lesen (getrennt durch 0-Byte)
curpos% = curpos% + len(curstr$) + 1
curstr$ = string$(a#,100 + curpos%) --------------- Puffer = Byte 100 bis Byte 2600 in a#
erg$ = erg$ + curstr$ + |
wend
erg$ = Left$(erg$,len(erg$) - 2) --------------------- Die letzten beiden | entfernen
else ---------------------------------------------------- Einzelauswahl
erg$ = 0| + curstr$
endif
case (erg$ = 0|) : clear erg$
Dispose a#
return erg$
/../funcion-referencias/xprofan/endproc/'>endproc
|
|
|
| |
|
|
|
Jac de Lad | Ich wünsche mit noch die Möglichkeit eigene Fehlernummern zu registrieren und die per Funktion zu erzeugen. Dann wird im Falle eine selbsterzeugten Fehlers die Errorproc angesprungen und entsprechend gehandelt. Das erleichtert das Fehlersuchen bzw. Fehlersammeln.
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 18.12.2007 ▲ |
|
|
|
|
Frank Abbing | Nico, dein Code enthält kein Clear(a#). Ich bin fast sicher, das neuer Speicher beim Erstellen nicht zwangsläufig mit Nullen gelöscht wird, zumindest bei älteren Profanversionen. |
|
|
| |
|
|