PureBasic 4.40 Beta1 released!

Ankündigungen PureBasic oder die Community betreffend.
Little John

Beitrag von Little John »

Freak, vielen Dank für die Anwort.
freak hat geschrieben:In dem Beispiel hier würde man also einfach nach dem FindMapElement(nameCount(), name$) nur noch nameCount() benutzen um auf das gefundene Element zuzugreifen.
Super! Das ist praktisch, dass FindMapElement() das aktuelle Element ändert. Allerdings funktioniert das nach AddMapElement() nicht auf die gleiche Weise:

Code: Alles auswählen

NewMap nameCount()

For k = 0 To 9
   name$ = people$(k)
   If FindMapElement(nameCount(), name$) = 0
      AddMapElement(nameCount(), name$)
      ; nameCount() = 1                 ; geht nicht
      nameCount(name$) = 1              ; geht
   Else
      nameCount() + 1
   EndIf
   Debug name$ + " #" + Str(nameCount())
Next
Ist es Absicht, dass nach AddMapElement() das neu hinzugefügte Element nicht automatisch das aktuelle ist?

Gruß, Little John
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

Beitrag von LCD »

freak hat geschrieben:
LCD hat geschrieben:Mein Projekt hat Probleme mit Images. Manchmal werden sie nicht gezeichnet, manchmal ist es invalid memory access. Seltsam...
Benutzt du eventuell Plot/Point() außerhalb des Bildes ? Das darf man jetzt nicht mehr. (debugger check fehlt noch, kommt in beta2)
Nein, ich zeichne alles direkt in den Speicher rein mit PokeL, und kopiere dann alles in ein Image (Prozedur MemoryToImage), da es ca. 100 mal schneller als das alte Plot auf Image ist. Plot benutze ich daher überhaupt nicht mehr.
Das Problem tritt seltsamerweise nicht überall auf. Im Viewer vom Retro-X z.B. kann ich mir 4 Images anschauen, aber beim fünften bekomme ich Invalid Memory access. Die Image Library dürfte aber was haben, wahrscheinlich wegen dem Support von Alpha channel (was ich aber nicht benutze). Ich werde an der Sache jedenfalls dran bleiben.
Interessanterweise zeigt mir der Debugger beim neuesten JaPBE auch nur die wenigsten Images an.
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Beitrag von H.Brill »

Mal eine Frage :
Wo kriegt ihr all die Infos über die neuen
Funktionen her ?
Außer dem Changelog hab ich nichts.

Wo bekomme ich Infos z.B. über die Map - library,
AddWindowsTimer(), EventTimer() und das
ShortcutGadget her ?
PB 5.60
Little John

Beitrag von Little John »

H.Brill hat geschrieben:Mal eine Frage :
Wo kriegt ihr all die Infos über die neuen
Funktionen her ?
Aus den Beispielprogrammen und dann durch ausprobieren.

Gruß, Little John
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Beitrag von H.Brill »

Das finde ich eigentlich nicht so ideal.
Da könnten die Entwickler wenigstens
eine Textdatei, die so ähnlich aufgebaut
ist, wie die original Hilfedatei, mitschicken.
Die kann ja auch in english sein.

Das würde dem nicht so gewieften User
mehr bringen, als in den Quellcodes
zu stöbern.

Naja, irgendwie werde ich zu meinem
AHAA - Erlebnis auch kommen.
PB 5.60
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Wieso kann ich bei AESEncode kurze Texte nicht codieren?

Code: Alles auswählen

*Buffer = AllocateMemory(10)
PokeS(*Buffer, "Hallo Welt")
*Encoded = AllocateMemory(10)

Key$ = "hi"
RandomSeed(Seed)
*InitializationVector = AllocateMemory(16)
For k = 0 To 15
  PokeA(*InitializationVector+k, Random(255))
Next

AESEncoder(*Buffer, *Encoded, 10, @Key$, 128, *InitializationVector, #PB_Cipher_CBC)
Debug PeekS(*Buffer, 10)
Debug PeekS(*Encoded, 10)

AESDecoder(*Encoded, *Buffer, 10, @Key$, 128, *InitializationVector, #PB_Cipher_CBC)
Debug PeekS(*Buffer, 10)
Debug PeekS(*Encoded, 10)
Wenn ich beim Encoder 100 als Length hinschreib, dann funktioniert das ganze perfekt. Mit 10 allerdings nicht. Wo liegt das Problem? Wie kann ich dies umgehen?

Gruss
PMTheQuick ;-)

EDIT: Aha, nicht gewusst: Die Eingabezeichenfolge wird mit dem Advanced Encryption Standard Algorithmus 128 Bit (AES-128) verschlüsselt. Die Eingabelänge muß mindestens 16 oder ein Vielfaches von 16 betragen.
Doch wie kann ich nun beliebig lange Buffer codieren?
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Beitrag von Hyper »

Hallo Freak,

danke vorweg! Immer wieder schön zu sehen, wie sich PB weiterentwickelt! Struktur kopieren und löschen find ich z.B. Klasse.
Schön wäre noch, wenn man ganze strukturierte Listen mit einem Befehl kopieren könnte...
PB 5.72
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Beitrag von Pelagio »

Joel hatte am 14.08
schon einmal die Frage/Feststellung gemacht, das bei CallFunktion der Debugger eine Fehlermeldung ausgibt.
Hier sagt der Debugger: "Zahl anstelle eines Strings erwartet" aber wie soll ich meinem DLL einen Prozessnamen übergeben, wenn ich nur Zahlen angeben kann?
Ich kann dies nur bestätigen. Bei PB4.31 funktioniert es, bei PB4.4 kommt die Fehlermeldung.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.10 LTS]. :allright:
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag von milan1612 »

Pelagio hat geschrieben:Joel hatte am 14.08
schon einmal die Frage/Feststellung gemacht, das bei CallFunktion der Debugger eine Fehlermeldung ausgibt.
Hier sagt der Debugger: "Zahl anstelle eines Strings erwartet" aber wie soll ich meinem DLL einen Prozessnamen übergeben, wenn ich nur Zahlen angeben kann?
Ich kann dies nur bestätigen. Bei PB4.31 funktioniert es, bei PB4.4 kommt die Fehlermeldung.
Du kannst einfach vor den String ein @ setzen, dann wird die Addresse übergeben und die ist eine Zahl :wink:
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Pelagio hat geschrieben: Ich kann dies nur bestätigen. Bei PB4.31 funktioniert es, bei PB4.4 kommt die Fehlermeldung.
Ja, ist ja auch richtig das die Fehlermeldung ausgegeben wird. Siehe Changelog:
- Changed: Call(C)Function(Fast) parameters have been changed from 'Any' to 'Integer'.
Ist jetzt halt ein wenig umständlicher Strings zu übergeben.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten