Seite 10 von 12

Verfasst: 02.04.2007 17:59
von Kiffi
@Nero: Klasse, was Du da machst! :allright:

(auch danke (wie immer) an ts-soft! :-))

Kleiner Vorschlag: Kannst Du zu diesem Thema einen neuen Thread in
"Code, Tipps und Tricks" erstellen? Dann kannst Du im ersten Beitrag den
Code, so wie er z.Zt. ist, posten und dann diesen bei Bedarf aktualisieren.

Ich werde mich heute abend damit mal ein wenig intensiver beschäftigen.

So langsam wird das hier zu unübersichtlich ;-)

Grüße ... Kiffi

Verfasst: 02.04.2007 18:24
von Nero
@Nero: Klasse, was Du da machst!
Danke
(auch danke (wie immer) an ts-soft!
Dem kann ich mir nur anschliesen :allright:
Kleiner Vorschlag: Kannst Du zu diesem Thema einen neuen Thread in
"Code, Tipps und Tricks" erstellen? Dann kannst Du im ersten Beitrag den
Code, so wie er z.Zt. ist, posten und dann diesen bei Bedarf aktualisieren.
Jo sollte möglich sein <)

Aber vorher noch ne kleine änderung :lol:
Ich habe die SplitToArray mal dahingehend geändert das sie über
Eval läuft das macht das ganze etwas kürzer und brauch nun die beiden
subs nicht mehr zum Daten Jonglieren.

Code: Alles auswählen

Procedure plStringToArray(MyArray.s(1), plHandle.l, String.s, Seperator.s = " ", BufferSize.l = 1024)
  Protected buffer.s = Space(BufferSize)

  plEval(plHandle, "@WorkArray = '';", 0)
  Rows.l = Val(plEval(plHandle, "@WorkArray = split(/"+Seperator+"/, '"+String+"');"))
  
  ReDim MyArray.s(Rows - 1)
  For x = 0 To Rows - 1
    MyArray(x) = plEval(plHandle, "@WorkArray["+Str(x)+"];")
  Next
EndProcedure

Verfasst: 03.04.2007 02:25
von Nero
So noch schnell 3 mini proceduren erstellt

Code: Alles auswählen

; Verschlüsselt einen String
Procedure.s plCrypt(plHandle.l, String.s, Salt.s, BufferSize = 1024)
   ProcedureReturn plEval(plHandle, "crypt('"+String+"','"+Salt+"');", 1, BufferSize)
EndProcedure

; Löscht das letzte Zeichen eines String
Procedure.s plChop(plHandle.l, String.s, BufferSize = 1024)
   ProcedureReturn plEval(plHandle, "my $out = '"+String+"'; chop($out); return $out;", 1, BufferSize)
EndProcedure

; Gibt den Timestamp zurück
Procedure.s plTime(plHandle.l)
   ProcedureReturn plEval(plHandle, "time();", 1)
EndProcedure
example.pl

Code: Alles auswählen

  Debug plCrypt(plHandle, "ich bin ein test", "aber ich nicht")
  Debug plChop(plHandle, "das t ist weg ->t")
  Debug plTime(plHandle);
Nix tolles aber kann man ab und zu ja mal brauchen *g*
Mal schauen ob mir morgen noch paar vernünftige einfallen.
Werde im laufe des tagen mal das Packet updaten.

Verfasst: 03.04.2007 02:47
von ts-soft
Nero hat geschrieben:So noch schnell 3 mini proceduren erstellt
Es geht voran :allright:
Nero hat geschrieben: Nix tolles aber kann man ab und zu ja mal brauchen *g*
Mal schauen ob mir morgen noch paar vernünftige einfallen.
Werde im laufe des tagen mal das Packet updaten.

Wie wäre es mit einem DeCrypt? Weil das Crypt ist so ziemlich sinnlos :lol:

PS: plTime entspricht Date(), ist also unnötig

Gruß
Thomas

Verfasst: 03.04.2007 10:56
von AND51
> Wie wäre es mit einem DeCrypt?
SelfHTML.org hat geschrieben:Die Funktion crypt leistet nur eine einseitige Verschlüsselung. Eine entsprechende Entschlüsselungsmethode ist nicht bekannt. crypt ist daher nicht geeignet, um Kodier- und Dekodierverfahren zu realisieren.
crypt entspricht dem gleichnamigen Systemprogramm unter Unix und der gleichnamigen Funktion in C.
Wenn du das schaffst, dann spring ich aus dem Keller-Fenster! :lol:


Hier weitere Inspirationen, dort schlage ich immer nach, wennes um Perl geht: http://de.selfhtml.org/perl/index.htm

Klick auf "Funktionen", dort ist das, was wir hier implementieren. Dort kannst du dir auch noch mal nachlesen, was Hashes sind.


Frage: Wenn ich dieses Packet jetzt benutze, wie erreiche dann die Interpolation von Variablen in Strings?
Wenn ich das hier sehe, dann glaube ich, dass es gar nicht geht:
> plEval(plHandle, "@WorkArray = '';", 0)
(Hier wurden 'einfache Anführungszeichen' verwendet!)

Beispiel:

Code: Alles auswählen

my $wetter="sonnig";
print "Es ist $wetter, nicht?"; # Wird interpoliert, da doppelte "Anf.zeich." verwendet

print 'Es ist $wetter, nicht?'; # Wird nicht interpoliert, da einfache 'Anf.zeich.' verwendet
Beispiel 1 ergibt: Es ist sonnig, nicht?
Beispiel 2 ergibt: Es ist $wetter, nicht?

Von den Anführungszeichen hängt es ab, ob die Interpolation durchgeführt wird, oder nicht. Müsste ich jetzt Chr(34) in Zusammenhang mit dem Packet verwenden oder wie?

@ Nero: Soll das hier eine Array-Deklaration sein?
> plEval(plHandle, "@WorkArray = '';", 0)
Warum nicht
>> plEval(plHandle, "my @WorkArray;", 0)

Verfasst: 03.04.2007 12:12
von ts-soft
>> Wenn du das schaffst, dann spring ich aus dem Keller-Fenster! :lol:
Wenn man es nicht DeCrypten kann, ist es die sinnloseste Funktion die ich
je gesehen habe.

Verfasst: 03.04.2007 12:32
von AND51
Dann findest du MD5 also auch sinnlos? :wink:

crypt ist gedacht, um Passwörter so zu verschlüsseln, wie sie auch in .htaccess-Dateien gespeichert werden. Du darfst bei der ganzen Sache hier nicht vergessen, dass Perl eigentlich für die Web-Umgebung erschaffen worden ist. Und dort muss man eben auch öfter mal Passwörter vergleichen. :)

Verfasst: 03.04.2007 14:17
von Nero
dass Perl eigentlich für die Web-Umgebung erschaffen worden ist.
o_O das stimmt aber mal nicht :mrgreen:

Also das mit den "" und '' ist so ne sache da PB soweit mir bekannt ist es nicht zuläst \" innerhalb eines strings zu schreiben daher bleibt wohl wirklich nur Chr(34)

Warum nicht
plEval(plHandle, "my @WorkArray;", 0)
Hast recht ^^
Wenn man es nicht DeCrypten kann, ist es die sinnloseste Funktion die ich je gesehen habe.
Ist halt nen einweg Crypt man könnte genausogut den CRC oder MD5
fingerprint nehmen da die eh in PB drin sind *g*[/code]

Verfasst: 03.04.2007 14:32
von ts-soft
Nero hat geschrieben: Also das mit den "" und '' ist so ne sache da PB soweit mir bekannt ist es nicht zuläst " innerhalb eines strings zu schreiben daher bleibt wohl wirklich nur Chr(34)
Ich finde #DQUOTE$ besser, oder Du nutzt folgenden
Tip von mir:
http://www.purebasic.fr/german/viewtopi ... esequenzen
Dann kannste mit \q für " arbeiten :)

Verfasst: 03.04.2007 14:34
von AND51
> das stimmt aber mal nicht
Stimmt, da war doch was... Aber was? Ich meine mal ein Spiel o. Ä. gesehen zu haben, das kompiliert und nicht interpretiert wurde. In Perl geschrieben.

Aber wie dem auch sei, hinsichtlich dieser crypt-Funktion sollte diese Aussage eigentlich stimmen. Denn was willste mit ner .htaccess bei irgendeiner fertig kompilierten EXE? :lol:


> da PB soweit mir bekannt ist es nicht zuläst \" innerhalb eines strings zu schreiben
Wie gesagt, PB ist eine Programmiersprache und Perl eine Skriptsprache.
Skripte werden interpretiert, daher kann man Perl anders auslegen sodass man vielfältige Funktionsmöglichkeiten hat. Einem Interpreter wäre es egal, ob ich (mein bekanntes Beispiel) or oder || schreibe, and oder &&.
PB hingegen ist da strikter.


> Hast recht
Danke. :)