Español
C ++ Foro

Prf2Cpp: Bug en InStr()

 

RGH
Getestet con Profano2cpp 1.6b:

Wenn en InStr() una dritter Parámetro (Offset) con angegeben se, se dieser offensichtlich en 1 falso interpretiert. Folgendes Testprogramm macht lo deutlich:
declarar split%, pos%, satz$, texto$
text$ = Hugo qué here. Hugo qué here.
imprimir instr(Hugo, texto$)      In XProfan y Prf2Cpp igual: 1 - 1
imprimir instr(Hugo, texto$,1)    In XProfan y Prf2Cpp igual: 1 - 1
imprimir instr(Hugo, texto$,16)   In XProfan y Prf2Cpp igual: 16 - 16
imprimir instr(Hugo, texto$,17)   In XProfan y Prf2Cpp UNgleich: 0 - 16
waitinput
end

In XProfan liefert el letzte Línea korrekterweise valor 0, como de Position 17 (el u en el 2. Hugo) el gesuchte String Hugo sí no mehr vorkommt. Prf2Cpp liefert hingegen valor 16, el definitiv antes Punto liegt, de el gesucht se.

Saludo
Roland
(ansonsten de Profano2CPP begeistert, como se así sin cada Aufwand nahezu todos Programas por Knopfdruck deutlich beschleunigen dejar)
 
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
18.12.2007  
 




Sebastian
König
RGH
Getestet con Profano2cpp 1.6b:

Wenn en InStr() una dritter Parámetro (Offset) con angegeben se, se dieser offensichtlich en 1 falso interpretiert. Folgendes Testprogramm macht lo deutlich:
(...)
In XProfan liefert el letzte Línea korrekterweise valor 0, como de Position 17 (el u en el 2. Hugo) el gesuchte String Hugo sí no mehr vorkommt. Prf2Cpp liefert hingegen valor 16, el definitiv antes Punto liegt, de el gesucht se.


Hola Roland,

danke para el Referencia! Yo habe el Fehler ya gefunden y mi Code korrigiert. Mit el nächsten Profano2Cpp-Versión se lo entonces korrekt trabajo.

Zu deren Erscheinungstermin kann Yo desafortunadamente todavía nichts sagen ... Im Moment komme Yo gerade veces dazu, hier (flüchtig) mitzulesen y mich en konkrete Problemas con Profano2Cpp o. el SKControl.DLL a kümmern. Yo hoffe muy, dass Yo en el Frühjahr Tiempo finde, mich con el vielen neuen Features en XProfan 11 näher a beschäftigen. Möglicherweise se lo encima Weihnachten primero ni Versión 1.6c geben, el unos pocos Dinge enthält, welche Yo en el Sommer instalado haben (nichts Großartiges - sólo unos pocos kleine Verbesserungen y volle Vista-Kompatibilität... y natürlich el aktuellen Bugfix )

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
18.12.2007  
 




Frank
Abbing
Sebastian, dein Skype-Account es ständig offline.
 
18.12.2007  
 




Sebastian
König
Frank Abbing
Sebastian, dein Skype-Account es ständig offline.


Sí, stimmt - sorry... Yo meistens sólo ICQ (o. Pidgin, el normalen ICQ-Client mag Yo überhaupt no ) laufen. Usted hast natürlich bastante, Yo debería auch Skype veces otra vez starten.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
18.12.2007  
 




RGH
Sebastian König
Zu deren Erscheinungstermin kann Yo desafortunadamente todavía nichts sagen


Lo eilt no. Wenn uno lo veces rausgefunden ha puede ser el Abfrage entsprechend modifizieren. Si el Ergebnis de Instr() größer como el Longitud des Cuerdas es, es eben como 0 a werten.

Sin embargo, heute (Yo beschleunige en el Firma gerade una de me en XProfan geschriebenes Statistik-Programa, daß encima 23 Millionen Datensätze de beinahe 3000 Textdateien einliest, bearbeitet y una MySQL-Datenbank des Rechenzentrums schreibt) todavía una weiterer Fehler aufgefallen:

2006-12-18 > 2005-07-16 13:34:26
ergibt 0 (falso), obwohl el Stringvergleich 1 (verdadero) ergeben müßte. Wenn Yo, el ersten String nun en 9 Leerzeichen en el gleiche Longitud des zweiten Cuerdas bringe, stimmt el Ergebnis des Vergleichs.

Saludo
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
18.12.2007  
 




Sebastian
König
RGH
Lo eilt no. Wenn uno lo veces rausgefunden ha puede ser el Abfrage entsprechend modifizieren. Si el Ergebnis de Instr() größer como el Longitud des Cuerdas es, es eben como 0 a werten.


No bastante: Es en el Moment vielmehr así, dass (Startposition - 1) zurückgegeben se, si el String No se ha encontrado se. Yo weiß no, por qué y wann Yo esta Fehler instalado habe... wahrscheinlich es bisher no aufgefallen, como el Default para el Startposition simplemente 1 es y luego korrekt 1 - 1 = 0 zurückgegeben se...

RGH
Sin embargo, heute (Yo beschleunige en el Firma gerade una de me en XProfan geschriebenes Statistik-Programa, daß encima 23 Millionen Datensätze de beinahe 3000 Textdateien einliest, bearbeitet y una MySQL-Datenbank des Rechenzentrums schreibt) todavía una weiterer Fehler aufgefallen:

2006-12-18 > 2005-07-16 13:34:26
ergibt 0 (falso), obwohl el Stringvergleich 1 (verdadero) ergeben müßte. Wenn Yo, el ersten String nun en 9 Leerzeichen en el gleiche Longitud des zweiten Cuerdas bringe, stimmt el Ergebnis des Vergleichs.


Hmm. Hier Yo offenbar el Comportamiento des Stringsvergleich en XProfan offenbar no genau genug analysiert... el Code, el en >-Operation letztlich aufgerufen se, sieht en el Moment así de (de pstring.h):

D.h. antes el lexikographischen Vergleich se primero geprüft, si no una ya länger oder kürzer como el otro es. Si el en XProfan no así es, muss Yo el wohl ändern... Yo melde mich voraussichtlich morgen veces con uno neuen Versión

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
18.12.2007  
 




RGH
Sebastian König
antes el lexikographischen Vergleich se primero geprüft, si no una ya länger oder kürzer como el otro es. Si el en XProfan no así es, muss Yo el wohl ändern... Yo melde mich voraussichtlich morgen veces con uno neuen Versión


Nein, el es en XProfan (y Basic y Delphi ...) no así. El Longitud des Cuerdas tut nichts a Sache. Ein Leerstring es el Kleinstmögliche String, ansonsten zählen sólo el Ansicodes el Signo.
< chr$(0) < chr$(1) ... < ...
texto < text1 ... aber text > texa1

Kurz: Yo denke, du mußt el Längenüberprüfung simplemente weglassen.

Saludo
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
18.12.2007  
 




Sebastian
König
RGH
Kurz: Yo denke, du mußt el Längenüberprüfung simplemente weglassen.


Sí, así mache Yo ahora - sólo para el Fall, dass uno el beiden Cuerdas leer es, musste Todavía una Zusatz-Abfrage einbauen.

Un korrigierte Versión va igual por eMail a Usted fuera .

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
19.12.2007  
 




RGH
Sebastian König
Un korrigierte Versión va igual por eMail a Usted fuera .


Super! Gracias!

El beiden Problemas son weg.
Aber Yo bin en una weiteres gestoßen: Embedded SQL scheint no a trabajo. (Kann lo ser, dass lo defaultmäßig ausgeschaltet es?)
if prav_db% = 1

    sql$ = insert into prav values (:id_db$,:timestamp_db$,:datum_db$,:berater_db$,:kunde_db$,:sek_db$,:modul_db$,:aktion_db$,:online_db$,:dauer_db&,:moddauer_db&,:berdauer_db&)
    sqlexec sql$, 2

más

    sql$ = insert into fim values (:id_db$,:timestamp_db$,:datum_db$,:berater_db$,:kunde_db$,:sek_db$,:modul_db$,:aktion_db$,:online_db$,:dauer_db&,:moddauer_db&,:berdauer_db&)
    sqlexec sql$, 2

endif


Hier meldet se el ODBC-Treiber con el Meldung, dass el SQL-syntax near values (:id_db$;:time... no Haga clic en Aceptar es. Das dürfte en eingeschaltetem embedded SQL así nie beim ODBC-Treiber ankommen.

Saludo Roland

(Sorry, dass Yo dieses Hilo para el Meldung missbrauche, aber vom Arbeitsplatz kann/darf Yo no privaten eMails verschicken.)
 
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
20.12.2007  
 




Sebastian
König
RGH
Super! Gracias!

El beiden Problemas son weg.


Ah, super - el es schonmal bien!

RGH
Aber Yo bin en una weiteres gestoßen: Embedded SQL scheint no a trabajo. (Kann lo ser, dass lo defaultmäßig ausgeschaltet es?)
if prav_db% = 1

    sql$ = insert into prav values (:id_db$,:timestamp_db$,:datum_db$,:berater_db$,:kunde_db$,:sek_db$,:modul_db$,:aktion_db$,:online_db$,:dauer_db&,:moddauer_db&,:berdauer_db&)
    sqlexec sql$, 2

más

    sql$ = insert into fim values (:id_db$,:timestamp_db$,:datum_db$,:berater_db$,:kunde_db$,:sek_db$,:modul_db$,:aktion_db$,:online_db$,:dauer_db&,:moddauer_db&,:berdauer_db&)
    sqlexec sql$, 2

endif


Hier meldet se el ODBC-Treiber con el Meldung, dass el SQL-syntax near values (:id_db$;:time... no Haga clic en Aceptar es. Das dürfte en eingeschaltetem embedded SQL así nie beim ODBC-Treiber ankommen.


Eigentlich debería lo eingeschaltet ser, si no explizit con el Kommandozeilen-Opción -noemsql deaktiviert se. Yo sehe veces después de, qué como schiefläuft y melde mich otra vez.

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
20.12.2007  
 




Sebastian
König
Ok, el Ursache des Problems war bastante rápidamente gefunden: Profano2Cpp berücksichtigt embedded SQL sólo direkt en SQLExec-Befehlen! Yo war su ausgegangen, dass el auch en XProfan así es...

¿Es tatsächlich así, dass lo en XProfan con beliebigen Literalen funktioniert?

MfG

Sebastian

Apéndice: Yo verstehe auch el Ayuda así, dass lo sólo en SQLExec funktioniert:

XProfan-Ayuda
En SQLExec puede de XProfan 9 direkt Variables, como en embedded SQL en C++ o. Java, eingesetzt voluntad. Einfach una Doppelpunkt antes el Variable: (...)


Mein Vermutung (o. Befürchtung) es, dass XProfan el String dynamisch untersucht y ggf. el Variablennamen ersetzt. In Profano2Cpp va dies desafortunadamente konzeptionell no - el String muss para Zeitpunkt el Übersetzung aufgelöst voluntad....
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
20.12.2007  
 




RGH
¡Hola Sebastian,

embedded SQL fubktioniert en el Tat sólo en SQLExec y no en beliebigen Literalen.

(Tuve en el Tat auch con el Versión para beliebige Literale experimentiert, dafür aber wegen el einfachen Hochkommas, el una Stringwert einschließen, no sinnvolle Anwendung gefunden.)

Beim obigen Ejemplo funktioniert el intern also así: Im String SQL$ es also siempre el, qué auch en el Programa es, also z.B. where id = :id$.
Erst el SQLExec-Befehl incluso untersucht el ihm übergebenen String en eingebettete Variables y ersetzt esta entonces por ihren Inhalt. Würde en id$ also z.B. el Valor session5A6BC95601 posición, sería de :id$ entonces also where id = session5A6BC95601 voluntad. El Auflösung kann natürlich sólo a Laufzeit geschehen, auch en el Runtime.

Ok, Yo weiß, dass el el Sache para Usted no einfacher macht. Möglicherweise mußt Usted embedded SQL tatsächlich el direkte Literal hinter SQLExec beschränken. Aber desafortunadamente funktioniert el actualmente auch no. Wenn Yo el con el obigen SQL$-Cuerdas mache ...
if prav_db% = 1

    sqlexec insert into prav values (:id_db$,:timestamp_db$,:datum_db$,:berater_db$,:kunde_db$,:sek_db$,:modul_db$,:aktion_db$,:online_db$,:dauer_db&,:moddauer_db&,:berdauer_db&), 2

más

    sqlexec insert into fim values (:id_db$,:timestamp_db$,:datum_db$,:berater_db$,:kunde_db$,:sek_db$,:modul_db$,:aktion_db$,:online_db$,:dauer_db&,:moddauer_db&,:berdauer_db&), 2

endif

... stürzt el Prof2CPP con uno Schutzverletzung de. (En kürzeren Zeilen se ejecuta él aber por.)

Aber Por favor, ahora no Hektik, Sebastian. Yo habe mein Programa ahora umgeschrieben y en embedded SQL verzichtet (como sehen el Zeilen sólo entonces algo komplizierter de: ... values ( + id$ + + ...) y lo scheint ahora a trabajo. Aus el mehrtägigen Statistikjob es ahora hoffentlich otra vez una Sache geworden, el encima Nacht durchläuft. (Man läßt Vorgesetzte sólo no gerne largo warten ... ;) )

Saludo
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
20.12.2007  
 




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

8.736 Views

Untitledvor 0 min.
RudiB.20.10.2012

Themeninformationen



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