| |
|
|
Timotheus | P2CPP es una muy nützliches Tool, dass el geschriebenen Programas deutlich beschleunigt, gerade en komplexen y umfangreichen Berechnungen sólo en el RAM. Im Durchschnitt ergibt se entonces en uno solchen Anwendung una Beschleunigung en el Faktor 10 oder mehr. En normalen Datenmengen es XP esta ausreichend, GDO arbeitet z.B. auch con XP11 y es para gewöhnlich ya después de algunos Sekunden fertig. En muy großen Datenmengen benötigt uno aber una Portierung en un otro Lingua, como z.B. Ensamblador oder P2CPP. Ein Vergleich el Geschwindigkeiten en una solchen Programa ergab z.B. el folgende:
älterer Computer: XP11: 181s P2CPP: 3,5s
neuerer Computer: XP11: 52s P2CPP: 1,7s
Der Autor Aunque no mehr erreichbar, para diejenigen el aber todavía antes el, zumindestens informatischen, Ableben des Autor una Vollversion obtener haben, es dieses Tool weiterhin muy nützlich. Tal vez Sebastian König plötzlich verstorben, como Dietmar Horn, así dass él el Software deshalb no más vertreiben kann. Von el Prospeed.dll Tuve z.B. auch veces una Vollversion käuflich bezogen, el es ahora aber Freeware y no verschollen.
Als Compiler eignet se BCC55, welches lo aquí como Freeware para Descargar son: [...]
El Versión 2.0b enthält aber todavía unos pocos Fehler. Un Información general:
1. Mod
a% = b% Mod (c%*d%) se a nA = nB (_L(nC*nD) % _L());
Solución: P2CPP oder el Compiler zeigen una Fehler a. Diese Línea folgendermaßen vereinfachen:
$IFDEF P2CPP z% = (c%*d%) a% = b% Mod z% $ELSE a% = b% Mod (c%*d%) $ENDIF
2. Inc y $IFDEF
Un de $IFDEF y $ENDIF eingeklammerte Inc se fälschlicherweise a cada Tiempo eingebunden.
Solución: Nach Incs suchen y unabhängig de bedingter Compilierung hacer
3. &MemDC
a% = &MemDC se a nA = ReadLong(g_hMemDC, );
Solución: Compiler zeigt el Fehler a. Dort el Fehler folgendermaßen reparieren:
MCLS 100,100 $IFDEF P2CPP 'P2CPP: <INLINE_CPP> nA = (long)g_hMemDC; 'P2CPP: </INLINE_CPP> $ELSE a% = &MemDC $ENDIF
4. &Loop
&Loop en uno normalen Whileschleife erhält todavía el Werte de XP10, no XP11. Das heißt esta
Whileloop 10 a% = 1 Mientras que a% = 1 imprimir &Loop a% = 0 Wend Wend
se bajo P2CPP y a XP10 zehnmal "1" ausgegeben, bajo XP11 "1" - "10". Bajo XP11 muss &Loop por lo tanto uno lokalen Variable zugewiesen y ser esta entonces en el zweiten Bucle verwendet voluntad, no &Loop incluso. GDO kann el &Loop's encontrar el no de uno Whileloopschleife umgeben son: [...]
5. a% > b%/c%
if a% > b%/c% se a if (_D(nA>nB) / _D(nC))
P2CPP klammert hier anders como XP, el el Division Vorrang son, por lo tanto necesario el Klammern a Kompatibilitätswahrung en (">" oder "<") y ("/" oder "\") manuell gesetzt voluntad. GDO kann todos Zeilen encontrar en denen una solche Zusatzklammer notwendig ser podría: [...]
6. a%*b%\c%
a% = b%*c%/d% 'vollständige Division e% = b%*c%\d% 'ganzzahlige Division se a nA = nB*_D(nC) / _D(nD); nE = nB*(int)(nC / nD);
XP berechnet zuerst el Multiplikation entonces el Division, e%=(b%*c%)\d%, P2CPP macht lo genau andersrum. Es en vollständiger Division unproblematisch (Kommutativgesetz), en ganzzahliger Division son el Ergebnisse aber unterschiedlich. Das betrifft Zeilen con "*" y "\". GDO kann todos Zeilen encontrar en denen una Zusatzklammer notwendig ser kann: [...]
El Fehler voluntad en uno Textdatei während uno Durchlaufs a grafischen Darstellung abgespeichert, si en el config.ini "P2CPP" en "1" gesetzt es. |
|
|
| |
|
|
|
Sven Bader | Desde que otra vez mehr con Profano2CPP a tun habe dokumentiere Yo hier Dinge, en Yo así stolpere. Yo benutze el Versión 2.0a
Den Anfang möchte I, con el Zeilenweise Einlesen de Archivos hacer
1.
Dieses Ejemplo funktioniert bestens con bajo Windows erzeugten Archivos, con Archivos de Linux/Unix/Mac Umgebungen kommt lo a Fehlern. Profano2CPP scheint hier zwingend una CR LF como Zeilenumbruch a esperar also \r\n y no sólo \n oder sólo \r
Der Effekt fällt en media Tests unterschiedlich de. con VC++ (1998) fehlt cada Línea el erste Signo, como hier wohl el fehlende "\r" übersprungen se. En Borland C++ 5.5 se gefühlt alles zerhackt y uno landet a allem Unglück beim Auslesen en uno Endlosschleife.
Un (si auch Holzhammer)-Solución es el korrigieren el Zeilenumbrüche y speichern como KOPIE. Mi Solución es no bastante sauber, como ellos \r va \r\n austauscht y danach doppelte \n en einfache umwandelt. Das kann zuvor vorhandene vacío Zeilen en el Expediente löschen.
'Expediente korrigieren
Dim Zona#, FileSize(datei$)
BlockRead(datei$, Zona#, 0, FileSize(datei$))
content$ = String$(Zona#,0)
content$ = translate$(content$,Chr$(10),Chr$(13)+Chr$(10))
content$ = translate$(content$,Chr$(13)+Chr$(13),Chr$(13))
disponer Zona#
Dim Zona#, len(content$) + 1
String Zona#,0 = content$
Asignar #1, datei$+".tmp"
OpenRW #1
BlockWrite #1, Zona#, 0, len(content$)-1
Cerrar #1
disponer Zona#
'Kopie Zeilenweise auslesen sin Problemas
Asignar #1,datei$+".tmp"
Reset #1
i& = 0
Sinestar encargado Eof(#1)
Entrada #1,zeile$
getLine(zeile$)
EndWhile
Cerrar #1
2. Angeblich falsche Parámetro-Anzahl
Dies se beim Syntaxcheck en manchen Aufrufen adecuado. Se puede el Fehler ignorieren, como el Programas al Ende trotzdem korrekt laufen. Dennoch nervt lo, lo en cada Compilierung bestätigen tener y darüber evtl. echte Fehler a verpassen.
El Solución steckt aquí en el Expediente subfuncs.dat o. funcdb.dat en el \data\ Directorio de Profano2CPP, hier puede el Parameterzahlen korrigiert voluntad como para Ejemplo ogl.outlinefont 2 en lugar de 1 y ogl.pyramid con 3 en lugar de 2.
|
|
|
| |
|
|
|
Sven Bader | Einen tener Todavía
3. Vorzeichen
Ein Vorzeichenminus producido en Kombination con un Minus-Operator una Fehler beim Compilieren.
cls
declarar i&,j&
i& = 5
j& = 10 - -i&'Fehler
j& = 10 + -i&'ok
j& = 10 - -1'Fehler
j& = 10 + -1'ok
j& = 10 + +1'Fehler
j& = 10 - +1'ok
imprimir j&
waitkey
end
Also j& = 10 - -i& va no, j& = 10 + -i& dagegen funktioniert. Es esta egal si el Vorzeichen a un número oder Variable es. Ein doppeltes Plus (Operator + Vorzeichen) va auch no, hay puede ser natürlich el Vorzeichen simplemente weglassen.
El Solución? Un Klammer el número con el Vorzeichen: j& = 10 - (-1) |
|
|
| |
|
|
|
Sven Bader | Noch algo para Thema Se bloquea , como Yo gerade otra vez así una Fall hatte...
Diese treten gelegentlich (entonces reproduzierbar) beim Übersetzen en, also si P2CPP "Übersetze..." anzeigt. El Prozentzahl antes el Choque, son hier auch una ungefähre Concepto de el Punto en el Code.
Lo kommt hier wohl a Zugriffsverletzungen, porque beim Ausweichen en alte Systeme (Windows XP) se ejecuta el Übersetzung sauber por.
Folgende Línea war por ejemplo para choque verantwortlich.
factor! = 1.0 / Max(0.00001, sqrt(cross![0] * cross![0] + cross![1] * cross![1] + cross![2] *cross![2]))
En me ha ya el matemáticamente irrelvante Hinzufügen de Klammern geholfen, en el Choque a vermeiden:
factor! = 1.0 / Max(0.00001, sqrt((cross![0] * cross![0]) + (cross![1] * cross![1]) + (cross![2] *cross![2])))
Lo scheint sin embargo una cierto Menge "kritischer" Zeilen para choque nötig a ser, como Yo en un pequeño Code no reproduzieren podría.
Auch en el Vergangenheit waren siempre Verkettungen vieler Operatoren el ursache. El Solución siempre Klammern oder Teilrechnungen en una variable zwischenspeichern. |
|
|
| |
|
|
|
Sven Bader | Addfiles con Unterverzeichnissen also führendem Stern, funktioniert no con absoluten Pfaden.
Hier landen zwar Archivos en el Listbox de el angegebenen Directorio pero la Pfad a Expediente es stattdessen el aktuelle Arbeitsverzeichnis y así falso! In historyPath$ steckt una absoluter Pfad. Beheben lässt lo, indem uno antes Ausführung de AddFiles en el betreffende Directorio wechselt.
ChDir historyPath$
AddFiles *historyPath$+"\\"+DateiName(dname$) +"*"
ChDir CurrentDir$'vorheriges Directorio muss vorab gespeichert voluntad
Regex
XProfan 1 Beliebig viele Whitespaces, entonces cat como ganzes Wort (caso-insensitive) 4 como ganzes Wort (caso-insensitive) 4 erster no-Whitespace
Profano2CPP -1 abweichend 4 passt 1 abweichend
Wer hier correcto liegt y por qué, lo en Profano una vez el kleine y una vez el große ~S braucht, weiß Yo no, como Yo en el Umgang con Regex no muy erfahren bin. |
|
|
| |
|
|
|
Sven Bader | Das Thema Klammern hatten wir ya unos pocos Tiempo aber genau el glaube Todavía no:
Um Bedingungen con oder o y (|, &) debería siempre una Klammer, sonst es en P2CPP no:
falso
correcto
|
|
|
| |
|
|