Forum | | | | Dirk Kuntzmann | Hello Profaner,
I have today began one Progrann moreover To write, I 2005 began having (presumably Profan9). then running the program correct. today there apparently a problem with the values)-function where I do not faith the the Error in the program lying, there this already correct worked has. Getestet have I it today under windows2000 and Windows XP. It's all right here around the Verschlüsselung / Entschlüsselung of dBase-tables. Folgender Programmausschnitt ought to the trouble show: CompileMarkSeparationdeclare 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
I hope, I have The einzelenen Ausschnitte correctly. together knitted. After the Start go Testdateien prepares. then appear one dialog. with klick on the arrow appear a Dateiauswahl. Please The Test.dbf dial. Then in the dialog one Datenfeld displayed (unverschlüsselt name). now can one Key association go z. B. 1. After the verification with OK go The Datensätze verschlüsselt and the same area again displayed. gives one now again as Key a 1 one, should The Verschlüsselung cancelled go. unfortunately missing the first character. Gleiches happens with the input one individual a. gives one z. B. 12345 one operates everything correctly. with abc but not. here's a entschlüsselung none possible. there in the Help too no Einschränkungen made go like a values) looks should what about me faith, that the already once functions has, think I almost, the it itself for a trouble for Roland deals. but Perhaps übersehe so did i only slightly. for a Tipp would I grateful.
Greeting Dirk |
| | | | |
| | Michael Wodrich | Testdateien_erstellen clutching on one Dialogfeld To, that first in the subesquent procedure prepares becomes. I suppose, that You this Codeschnipsel not tested have.
2 Tipps: a) send a functioning code (Button 1 entschlüsselt whom Detenbankinhalt, the but nirgendwo verschlüsselt becomes) b) save The Umsetzungen/Funktionsergebnisse in a Variables and use solely these Variable behind PASSWORD. so can You, the, what on values) transfer becomes before to check Show let. its too possible, the PASSWORD here something sensitive reacted, what The length the Passwortes angeht. one ought to fundamentally no Passworte using The kürzer as 8 characters are. The 4stelligen Pins the Banken are a Sicherheits-Traumschloss. Diesen 4-numbers-code can with of/ one high Trefferquote even guess.
Lass simply whom computer time a 4stellige number detect and try 100x tappt im dunkeln To guess. The Number of hits says you The prozentuale Trefferquote. you become marvel.
Best wishes Michael Wodrich
Nachtrag: i'm first now noticed, the You with gesetztem PASSWORD The Datenbankinhalte entschlüsselst circa tappt im dunkeln then with gelöschtem again by the Schlüsselfunktion To send. rather is it if you The File unverschlüsselt then without PWD$() save and the code a Own routine write. in the from you angegebenen shape functions both directions not. |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 07/27/07 ▲ |
| |
| | Michael Wodrich | AUTSCH
The Error lying integrally simply in the TRIM$()-function. tappt im dunkeln removes too Steuerzeichen, The in the PWD-String but vorkommen.
this is in the Help Trim$ eindeutig differently described !!!
here the Testcode: CompileMarkSeparationdeclare 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
Best wishes Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 07/27/07 ▲ |
| |
| | Dirk Kuntzmann | Hello Michael,
many Thanks for your speedy response. on The Trim-function I had not virtual. remaining The question whether the so correctly. and pseudo is or whether it itself hierbei circa a small Error deals. i'm namely solid the opinion, that this part former functions has.
with the safety the Passwörter have you got naturally right, are usually too longer, I have now only short chosen, around the trouble To explain. Z. B. abc cut whom first letters at Entschlüsseln ex, during cba functions. A0E96519 against can itself not at all More decode. there The Passwörter but from each computer differently together staid go have I none Einfluss hereon which character or which number where in the Password auftaucht.
there's accordingly presumably only two Opportunities: 1. I were on a trim-function The nothing wegschneidet or I try the program so To change, that with all Password-functions The Trim-function not used and differently realized becomes. The first Solution find I but explicit angenehmer.
Greeting Dirk |
| | | | |
| | Dieter Zornow | Versuchs time with the Api StrTrim, i think The ought to functions CompileMarkSeparationDef 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 | 07/27/07 ▲ | |
| |
| | Dirk Kuntzmann | Hello Dieter,
Vielen Thanks, of Apis have I unfortunately no idea, but the what You there gezaubert has schein super To functions. remaining The question, whether The Profan Own trim-function now a Error has or whether itself behind it one sense hide.
Greeting Dirk |
| | | | |
| | Dirk Kuntzmann | P.s. During one The normal Trim-function from the speed since hardly wahrnimmt, is the Api-Variant very slow (with only concise 600 Datensätzen has to the feeling, that the computer stand stayed is).
Greeting Dirk |
| | | | |
| | Jörg Sellmeyer | You can whom area global deklarieren and dimensionieren. therefore becomes The procedure probably something faster: CompileMarkSeparation |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07/27/07 ▲ |
| |
| | | | | | | |
|
AnswerThemeninformationenthis Topic has 5 subscriber: |