Español
C ++ Foro

Información general encima Fehler y Lösungen en 2.0b

 

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.
 
22.02.2017  
 




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.
cls
declarar datei$, zeile$
datei$ = "test.txt"
Asignar #1,datei$
Reset #1

WHILENOT Eof(#1)

    Entrada #1,zeile$
    imprimir zeile$

ENDWHILE

Cerrar #1
imprimir "fertig!"
waitkey
end

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.




80 kB
Bezeichnung:p2cpp
Hochgeladen:04.08.2021
Ladeanzahl91
Descargar
56 kB
Bezeichnung:subfuncs
Hochgeladen:04.08.2021
Ladeanzahl85
Descargar
 
04.08.2021  
 




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)
 
08.10.2021  
 




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.
 
20.10.2021  
 




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
Match$("^(~s*)~b(?i)cat~b","   CAT and dog")
imprimir %MatchPos
Match$("~b(?i)cat~b","   CAT and dog")
imprimir %MatchPos
Match$("~S", "   CAT and dog")
imprimir %MatchPos

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.
 
21.03.2023  
 




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
Largo rtf#,0 = 60
Largo rtf#,4 = ~CFM_FACE | ~CFM_CHARSET | ~CFM_COLOR

correcto
Largo rtf#,0 = 60
Largo rtf#,4 = (~CFM_FACE | ~CFM_CHARSET | ~CFM_COLOR)
 
21.11.2023  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

7.173 Views

Untitledvor 0 min.
Thomas Freier06.01.2024
HofK20.12.2023
Walter12.12.2023
Michael W.08.12.2023
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

Sven Bader (5x)
Timotheus (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie