Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

Verzeichnisübersicht

Hilfe beim Programmieren mit dem fx-9860G SDK.

Re: Verzeichnisübersicht

Beitragvon SimonLothar » Sa 21. Nov 2009, 11:28

1. char/integer-Zuweisungen:
Man kann "unsigned char"- und "unsigned integer"-Variablen gegenseitig zuweisen. Man muss allerdings an den zulässigen Wertebereich denken. unsigned char kann eben nur 0..255 fassen.

2. Bfile_WriteFile:
Du hast keinen Fehler gemacht!

Bfile_WriteFile hat aber ein paar unangenehme Eigenschaften, die dummerweise im Handbuch nicht erwähnt werden.
In Deinem Beispiel liest Du zunächst eine Datei ein. Der Dateizeiger steht danach am Ende der Datei.
Anschließend schreibst Du direkt weiter.
Bfile_WriteFile kann eine existierende Storage-Memory-Datei aber nicht über den einmal mit Bfile_CreateFile reservierten Bereich hinaus verlängern.
Selbst wenn Du den Dateizeiger mit Bfile_SeekFile zurückpositionierst, dann könnte man zwar mit Bfile_WriteFile bedingt schreiben. Bfile_WriteFile kann aber wegen technischer Limitierungen des Flash-Chips grundsätzlich keine 0->1 Bitveränderung schreiben. Bfile_WriteFile hängt den Rechner vielmehr beim Versuch, eine 0->1 Bitveränderungen zu schreiben, gnadenlos auf. Die Ursache hierfür ist ein Bug in der low-level Routine, die den Flash-Chip schreibt.

Der sichere Weg, eine bereits beschriebene Datei im StorageMemory zu verändern, ist: lesen->löschen->neu anlegen. Damit eignet sich das StorageMemory nicht unbedingt für Dateien, die häufigen Änderungen unterliegen, da Dein Programm dann irgendwann wegen einer erforderlichen Optimierung des StorageMemory's versagen wird.

Man muss auch aufpassen, wenn man im StorageMemory eine Datei mit Bfile_CreateFile neu anlegt und dann portionsweise mit Bfile_WriteFile füllt. Wenn man einmal eine ungerade Anzahl von Bytes geschrieben hat, kann man nicht mehr erfolgreich weiterschreiben! Die low-level Routine, die den Flash-Chip schreibt, arbeitet WORD-orientiert. Das würde ich zwar nicht unbedingt Bug nennen, aber man hätte das im Handbuch erwähnen müssen.

Und Achtung! Bfile_WriteFile hat, wenn es auf eine SD-card angewendet wird, wieder andere Macken.

Siehe auch hier:
http://casiokingdom.org/modules.php?nam ... pic&t=1526
http://casiokingdom.org/modules.php?nam ... pic&t=1276

Tut mir leid, dass die Antwort nicht übersichtlicher ausfallen konnte.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner:

Re: Verzeichnisübersicht

Beitragvon Paul94 » Sa 21. Nov 2009, 12:32

Vielen Dank! Lesen funktioniert jetzt. Wenn wieder Probleme auftauchen werde ich Fragen stellen.

Edit: Die erste Frage ist schon da: Wie kann ich einen int von 0-9 ausgeben? Print nimmt ja nur unsigned char*.
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner:

Re: Verzeichnisübersicht

Beitragvon Paul94 » Di 24. Nov 2009, 18:50

So bin jetzt fertig. Das AddIn ver- und entschlüsselt Textdateien auf dem Massenspeicher.
Ich habs hier auf Casigo hochgeladen:

Bild

Bild

Bild

Vielen Dank an Simon für seine Hilfe!

Paul

PS: Kann mal einer Krypto auf Casigo löschen, sodass da nur noch KRYPTO Vers. 2 ist?
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner:

Re: Verzeichnisübersicht

Beitragvon defcon » Fr 27. Nov 2009, 13:45

defcon
 
Beiträge: 138
Registriert: Sa 15. Nov 2008, 12:54
Taschenrechner:

Vorherige

Zurück zu fx-9860G SDK (Alle fx-9860G Modelle)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste