Foro | | | | Dirk Kuntzmann | ¡Hola Profaner,
Yo heute comenzó una Progrann más a escribir, dass Yo 2005 comenzó hatte (vermutlich Profano9). Damals lief el Programa einwandfrei. Heute hay anscheinend una Problema con el Password-Función wobei Yo no glaube el el Fehler en el Programa liegt, como dies ya einwandfrei gearbeitet ha. Getestet Yo lo heute bajo Windows2000 y Windows XP. Lo va hier a Verschlüsselung / Entschlüsselung de dBase-Tabellen. Folgender Programmausschnitt debería el problema zeigen: KompilierenMarcaSeparacióndeclare schrift%,feld$[5],datei$
DECLARE TEXT4&
proc testdateien_erstellen
assign #1,artikel.str
rewrite #1
print #1,ARTIKEL;C;50;0
print #1,GRUPPE;C;50;0
print #1,KCAL;C;5;0
print #1,PORTION;C;3;0
close #1
sleep 500
db(create,artikel.str,test.dbf)
if datei$=test.dbf
dbopen(#1,datei$)
db(go,|<)
whilenot &dbRecNo=6
db(appendblank)
dbput(ARTIKEL,Name)
dbput(GRUPPE,Gruppe)
dbput(KCAL,500)
dbput(PORTION,100)
dbputrec(0)
endwhile
dbgo(5)
else
dbopen(#1,datei$)
dbgo(5)
endif
settext text4&,trim$(dbget$(ARTIKEL))
dbclose(#1)
copy test.dbf > test1.dbf
datei$=test1.dbf
endproc
proc rueckschluesseln
DECLARE DLG&,DIALOGENDE%
DECLARE TEXT1&,TEXT7&
DECLARE TEXT2&,Text8&
DECLARE TEXT3&
DECLARE EDIT1&
DECLARE TEXT5&,text6&
DECLARE BUTTON1&,Button3&
DECLARE BUTTON2&
DLG&=CREATE(DIALOG,%HWND,Datenbank rĂĽckschlĂĽsseln,351,293,292,213)
TEXT7& =@CREATE(TEXT,DLG&,Quelle/Ziel:,0010,0010,0100,0020)
TEXT1& =@CREATE(TEXT,DLG&,Daten vorher:,0010,0040,0100,0020)
TEXT2& =@CREATE(TEXT,DLG&,SchlĂĽssel:,0010,0070,0100,0020)
TEXT3& =@CREATE(TEXT,DLG&,Daten nachher:,0010,0120,0100,0020)
TEXT4& =@CREATE(TEXT,DLG&,,0115,0040,0150,0020)
EDIT1& =@CREATE(EDIT,DLG&,,0115,0070,0150,0020)
TEXT5& =@CREATE(TEXT,DLG&,,0115,0120,0150,0020)
TEXT8& =@CREATE(TEXT,DLG&,,0010,0125,0150,0020)
text6& =@CREATE(TEXT,DLG&,1. mit Reg-Code;2. mit 12345,0115,0090,0150,0020)
BUTTON3& =@CREATE(BUTTON,DLG&,>,0110,0010,0020,0024)
BUTTON1& =@CREATE(BUTTON,DLG&,OK,0010,0150,0070,0024)
BUTTON2& =@CREATE(BUTTON,DLG&,Abbruch,0100,0150,0070,0024)
SETFOCUS(edit1&)
LET DIALOGENDE%=0
WHILENOT DIALOGENDE%
WAITINPUT
If @EQU(%KEY,2)
LET DIALOGENDE%= 1
ELSEIF clicked(BUTTON1&) BUTTON
if trim$(gettext$(edit1&))=
setfocus(edit1&)
else
dbopen(#1,datei$)
dbgo(|<)
whilenot %dbeof
clear feld$[]
PASSWORD trim$(gettext$(edit1&))
feld$[1]=pwd$(trim$(dbget$(ARTIKEL)))
feld$[2]=pwd$(trim$(dbget$(GRUPPE)))
feld$[3]=pwd$(trim$(dbget$(KCAL)))
feld$[4]=pwd$(trim$(dbget$(PORTION)))
password
dbput(ARTIKEL,pwd$(feld$[1]))
dbput(GRUPPE,pwd$(feld$[2]))
dbput(KCAL,pwd$(feld$[3]))
dbput(PORTION,pwd$(feld$[4]))
dbputrec(0)
dbgo(>)
wend
dbclose(#1)
sleep 500
dbopen(#1,datei$)
dbgo(5)
settext text5&,trim$(dbget$(ARTIKEL))
dbclose(#1)
settext edit1&,
endif
ELSEIF clicked(BUTTON3&) BUTTON
datei$=LoadFile$(UmschlĂĽsseln von:,Test*.dbf)
if datei$=test.dbf
dbopen(#1,datei$)
db(go,|<)
whilenot &dbRecNo=6
db(appendblank)
dbput(ARTIKEL,Name)
dbput(GRUPPE,Gruppe)
dbput(KCAL,500)
dbput(PORTION,100)
dbputrec(0)
endwhile
dbgo(5)
else
dbopen(#1,datei$)
dbgo(5)
endif
settext text4&,trim$(dbget$(ARTIKEL))
dbclose(#1)
ELSEIF clicked(BUTTON2&) BUTTON
LET DIALOGENDE%= 1
ENDIF
WEND
@DESTROYWINDOW(DLG&)
endproc
cls RGB(23,23,23)
traceon
showmax
let schrift%=create(font,Comic sans MS,16,0,0,0,0)
SETDIALOGFONT schrift%
datei$=test.dbf
testdateien_ers
rueckschluesseln
end
Yo hoffe, Yo el einzelenen Ausschnitte correcto zusammen gestrickt. Nach el Start voluntad Testdateien erstellt. Dann erscheint una Diálogo. En klick en el Pfeil erscheint una Dateiauswahl. Bitte el Test.dbf wählen. Dann se en el Diálogo una Datenfeld adecuado (unverschlüsselt Name). Jetzt kann una Schlüssel eingegeben voluntad z. B. 1. Nach el Bestätigung con OK voluntad el Datensätze verschlüsselt y el gleiche Feld otra vez adecuado. Gibt uno otra vez como Schlüssel una 1 una, debería el Verschlüsselung rückgängig gemacht voluntad. Leider fehlt el erste Buchstabe. Gleiches passiert en Eingabe uno individual a. Gibt uno z. B. 12345 una arbeitet alles korrekt. En abc pero no. Hier es una entschlüsselung nada posible. Como en el Ayuda auch no Einschränkungen gemacht voluntad como una Password aussehen se y yo glaube, dass el ya una vez funktioniert ha, denke Yo fast, el es una Problema para Roland es. Aber tal vez übersehe Yo auch sólo algo. Für una Tipp wäre Yo dankbar.
Saludo Dirk |
| | | | |
| | Michael Wodrich | Testdateien_erstellen greift en una Dialogfeld a, daß sólo en el folgenden Procedimiento erstellt se. Yo nehme a, dass Usted esta Codeschnipsel no getestet hast.
2 Tipps: a) sende una funcionamiento Code (Button 1 entschlüsselt el Detenbankinhalt, el aber nirgendwo verschlüsselt se) b) speichere el Umsetzungen/Funktionsergebnisse en uno Variables y benutze ausschließlich esta Variable hinter PASSWORD. So kannst Usted el, qué a Password transferencia se vorher a Prüfung Mostrar dejar. Es auch posible, el PASSWORD hier algo sensibel reagiert, lo que el Longitud des Passwortes angeht. Man debería grundsätzlich no Passworte benutzen el kürzer como 8 Signo son. El 4stelligen Pins el Banken son una Sicherheits-Traumschloss. Diesen 4-Pagar-Code puede ser con uno hohen Trefferquote incluso erraten.
Lass simplemente el Computer veces una 4stellige Zahl ermitteln y versuche 100x ellos a erraten. El Anzahl el Treffer sagt Usted el prozentuale Trefferquote. Usted wirst staunen.
Schöne Grüße Michael Wodrich
Apéndice: Mir es sólo ahora aufgefallen, el Usted con gesetztem PASSWORD el Datenbankinhalte entschlüsselst en ellos entonces con gelöschtem otra vez por el Schlüsselfunktion a enviar. Besser es si el Expediente unverschlüsselt entonces sin PWD$() speicherst y para el Verschlüsseln una propio Rutina schreibst. In el de Usted angegebenen Form trabajo beide Richtungen no. |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 27.07.2007 ▲ |
| |
| | Michael Wodrich | AUTSCH
Der Fehler liegt bastante simplemente en el TRIM$()-Función. Sie lejos auch Steuerzeichen, el en el PWD-String aber vorkommen.
Es en el Ayuda en Trim$ eindeutig anders beschrieben !!!
Hier el Testcode: KompilierenMarcaSeparacióndeclare schrift%,feld$[5],datei$
DECLARE TEXT4&
proc testdateien_erstellen
assign #1,artikel.str
rewrite #1
print #1,ARTIKEL;C;50;0
print #1,GRUPPE;C;50;0
print #1,KCAL;C;5;0
print #1,PORTION;C;3;0
close #1
sleep 500
db(create,artikel.str,test.dbf)
if datei$=test.dbf
dbopen(#1,datei$)
db(go,|<)
whilenot &dbRecNo=6
db(appendblank)
dbput(ARTIKEL,Name)
dbput(GRUPPE,Gruppe)
dbput(KCAL,500)
dbput(PORTION,100)
dbputrec(0)
endwhile
dbgo(5)
else
dbopen(#1,datei$)
dbgo(5)
endif
settext text4&,trim$(dbget$(ARTIKEL))
dbclose(#1)
copy test.dbf > test1.dbf
datei$=test1.dbf
endproc
proc rueckschluesseln
DECLARE DLG&,DIALOGENDE%
DECLARE TEXT1&,TEXT7&
DECLARE TEXT2&,Text8&
DECLARE TEXT3&
DECLARE EDIT1&
DECLARE TEXT5&,text6&
DECLARE BUTTON1&,Button3&
DECLARE BUTTON2&
DLG&=CREATE(DIALOG,%HWND,Datenbank rĂĽckschlĂĽsseln,351,293,292,213)
TEXT7& =@CREATE(TEXT,DLG&,Quelle/Ziel:,0010,0010,0100,0020)
TEXT1& =@CREATE(TEXT,DLG&,Daten vorher:,0010,0040,0100,0020)
TEXT2& =@CREATE(TEXT,DLG&,SchlĂĽssel:,0010,0070,0100,0020)
TEXT3& =@CREATE(TEXT,DLG&,Daten nachher:,0010,0120,0100,0020)
TEXT4& =@CREATE(TEXT,DLG&,,0115,0040,0150,0020)
EDIT1& =@CREATE(EDIT,DLG&,,0115,0070,0150,0020)
TEXT5& =@CREATE(TEXT,DLG&,,0115,0120,0150,0020)
TEXT8& =@CREATE(TEXT,DLG&,,0010,0125,0150,0020)
text6& =@CREATE(TEXT,DLG&,1. mit Reg-Code;2. mit 12345,0115,0090,0150,0020)
BUTTON3& =@CREATE(BUTTON,DLG&,>,0110,0010,0020,0024)
BUTTON1& =@CREATE(BUTTON,DLG&,OK,0010,0150,0070,0024)
BUTTON2& =@CREATE(BUTTON,DLG&,Abbruch,0100,0150,0070,0024)
SETFOCUS(edit1&)
LET DIALOGENDE%=0
WHILENOT DIALOGENDE%
WAITINPUT
If @EQU(%KEY,2)
LET DIALOGENDE%= 1
ELSEIF clicked(BUTTON1&)BUTTON
if trim$(gettext$(edit1&))=
setfocus(edit1&)
else
dbopen(#1,datei$)
dbgo(|<)
whilenot %dbeof
clear feld$[]
PASSWORD trim$(gettext$(edit1&))
feld$[1]=pwd$(trim$(dbget$(ARTIKEL)))
--- debug-code -------
whileloop len(feld$[1])
print format$(#0,ord(mid$(feld$[1],&loop,1)));,;
endwhile
print len=,format$(#0,len(feld$[1]))
feld$[1] = trim$(feld$[1])
whileloop len(feld$[1])
print format$(#0,ord(mid$(feld$[1],&loop,1)));,;
endwhile
print len=,format$(#0,len(feld$[1]))
--- debug-code ENDE-------
feld$[2]=pwd$(trim$(dbget$(GRUPPE)))
feld$[3]=pwd$(trim$(dbget$(KCAL)))
feld$[4]=pwd$(trim$(dbget$(PORTION)))
dbput(ARTIKEL,feld$[1])
dbput(GRUPPE,feld$[2])
dbput(KCAL,feld$[3])
dbput(PORTION,feld$[4])
dbputrec(0)
dbgo(>)
wend
dbclose(#1)
sleep 500
dbopen(#1,datei$)
dbgo(5)
settext text5&,trim$(dbget$(ARTIKEL))
dbclose(#1)
settext edit1&,
endif
ELSEIF clicked(BUTTON3&)BUTTON
datei$=LoadFile$(UmschlĂĽsseln von:,Test*.dbf)
if datei$=test.dbf
dbopen(#1,datei$)
db(go,|<)
whilenot &dbRecNo=6
db(appendblank)
dbput(ARTIKEL,Name)
dbput(GRUPPE,Gruppe)
dbput(KCAL,500)
dbput(PORTION,100)
dbputrec(0)
endwhile
dbgo(5)
else
dbopen(#1,datei$)
dbgo(5)
endif
settext text4&,trim$(dbget$(ARTIKEL))
dbclose(#1)
ELSEIF clicked(BUTTON2&)BUTTON
LET DIALOGENDE%= 1
ENDIF
WEND
@DESTROYWINDOW(DLG&)
endproc
cls RGB(23,23,23)
traceon
showmax
let schrift%=create(font,Comic sans MS,16,0,0,0,0)
SETDIALOGFONT schrift%
datei$=test.dbf
rueckschluesseln
end
Schöne Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 27.07.2007 ▲ |
| |
| | Dirk Kuntzmann | ¡Hola Michael,
vielen Dank para deine respuesta rápida. An el Trim-Función Tuve no pensamiento. Bleibt el Cuestión si el así correcto y gewollt es oder si se hierbei en una pequeña Fehler es. Yo bin nämlich fest el Meinung, dass dieser Teil früher funktioniert ha.
Mit el Sicherheit el Passwörter hast du natürlich bastante, el son normalerweise auch länger, Yo ahora sólo kurze gewählt, en el problema a verdeutlichen. Z. B. abc schneidet el ersten Buchstaben beim Entschlüsseln de, während cba funktioniert. A0E96519 wiederum lässt se überhaupt no mehr entschlüsseln. Como el Passwörter aber de cada Computer anders zusammen gesetzt voluntad Yo no Einfluss darauf welcher Buchstabe oder welche Zahl wo en el Contraseña auftaucht.
Lo son somit vermutlich sólo zwei Möglichkeiten: 1. Yo warte en una trim-Función el nichts wegschneidet oder Yo versuche el Programa así a verändern, dass en allen Contraseña-Características el Trim-Función no genutzt y anders realisiert se. El erste Solución finde Yo aber deutlich angenehmer.
Saludo Dirk |
| | | | |
| | Dieter Zornow | Versuchs veces con el Api StrTrim, Yo denke el debería trabajo KompilierenMarcaSeparaciónDef StrTrim(2) !SHLWAPI,StrTrimA
Proc ATrim
parameters besearch$,Char$
declare besearch#,result$
Dim besearch#,len(besearch$)+1
string besearch#,0 = besearch$
StrTrim(besearch#,addr(char$))
result$ = string$(besearch#,0)
dispose besearch#
return result$
endproc
cls
print ATrim( Test.exe , )
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 27.07.2007 ▲ | |
| |
| | Dirk Kuntzmann | ¡Hola Dieter,
Vielen Dank, de Apis Yo desafortunadamente ni idea, aber el qué du como gezaubert ha schein super a trabajo. Bleibt el Cuestión, si el Profano propio trim-Función nun una Fehler ha oder si detrás de él una Sinn verbirgt.
Saludo Dirk |
| | | | |
| | Dirk Kuntzmann | P.S. Während uno el normale Trim-Función de el Geschwindigkeit her kaum wahrnimmt, Es el Api-Variant muy langsam (en sólo knapp 600 Datensätzen ha al Gefühl, dass el Rechner posición geblieben es).
Saludo Dirk |
| | | | |
| | Jörg Sellmeyer | Usted puede el Zona global deklarieren y dimensionieren. Dadurch se el Procedimiento wahrscheinlich algo más rápido: KompilierenMarcaSeparación |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 27.07.2007 ▲ |
| |
| | | | | | | |
|
RespuestaThemeninformationenDieses Thema ha 5 subscriber: |