| |
|
|
![iF: 02.05.2006](.././../../i/a/1.gif) | |
|
| |
|
|
|
![Michael Wodrich: 02.05.2006](.././../../i/a/8.gif) Michael Wodrich | oui, ensuite ists bien sûr. et avec iFs drumherum-Funktionen volonté sich aussi qui C-Indianer ici wohl sentir.
Allerdings peux trop Fuß programmiert un weiteres Assign chez obigem Beispiel de Roland entfallen.
cela une ist bien pour weitere Bearbeitung, l'autre ist bien pour sofortige Handle-Freigabe.
merci belle Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 02.05.2006 ▲ |
|
|
|
|
![RGH: 02.05.2006](.././../../i/a/20.gif) RGH | [quote-part:4504e32796=iF]Aha alors devrait un réel fopen/fclose so air: ...[/quote-part:4504e32796] Korrekt! |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 02.05.2006 ▲ |
|
|
|
|
![H.Brill: 29.11.2023](.././../../i/a/86.gif) H.Brill | Irgendwas scheint mais pas libre gegeben trop volonté. Beim erneuten écrivons dans un avec OpenRW geöffneten Dossier, ist qui dernier DS doppelt drin, si le trop schreibenden données moins sommes. alors statt 3 DS seulement encore 2 drin stehen devrait.
Déclarer Long fichier, Memory étions[]
Set("Décimal", 2)
Struct Artikel = nom$(30), Preis!
Faible étions[], Artikel
SetSize étions[], 3
fichier = Assign($PROGDIR + "Waren.dat")
OpenRW fichier
With étions[0]
étions[0].nom$ = "Milch"
étions[0].Preis! = 0.99
EndWith
With étions[1]
étions[1].nom$ = "Butter"
étions[1].Preis! = 2.25
EndWith
With étions[2]
étions[2].nom$ = "Käse"
étions[2].Preis! = 3.55
EndWith
Imprimer "\nAus dem Array gelesen :"
AusgabeArray()
Sauver()
Imprimer "\nTaste pour Dateiausgabe..."
WaitKey
Ausgabe()
Imprimer "\nDelete phrase Nr. 2 dans Datei"
WaitKey
Arrdel étions[], 1, 1
Imprimer "\nAusgabe Array pour ArrDel"
Waitkey
AusgabeArray()
Sauver()
Imprimer "\nNach Sauver qui neuen Dossier."
Ausgabe()
WaitKey
Proc Sauver
Déclarer Long offset
Assign #1, $PROGDIR + "Waren.dat"
Effacer #1
Fermer #1
Assign #1, »
Assign #1, $PROGDIR + "Waren.dat"
OpenRW #1
offset = 0
WhileLoop 0, SizeOf(étions[]) - 1
BlockWrite #1, étions[&LOOP]
Inc offset, 35
Endwhile
Fermer #1
Assign #1, »
ENDPROC
Proc Ausgabe
Déclarer Long Records
Assign #1, $PROGDIR + "Waren.dat"
OpenRW #1
Records = GetFileSize(#1) / 34
Claire étions[]
SetSize étions[], Records
Seek #1, 0
WhileLoop 0, Records - 1
BlockRead(#1, étions[&LOOP], 0, SizeOf(étions[&LOOP]))
With étions[&LOOP]
Imprimer "Artikel :", .nom$, "Preis : ", .Preis!
EndWith
Endwhile
Fermer #1
Assign #1, »
ENDPROC
Proc AusgabeArray
WhileLoop 0, SizeOf(étions[]) - 1
With étions[&LOOP]
Imprimer "Artikel : ", étions[&LOOP].nom$, "Preis :", étions[&LOOP].Preis!
EndWith
Endwhile
Sauver()
ENDPROC
Fin
Scheint so, comme wäre un profaninterner Speicherbereich, qui pas ou bien pas vollständig zurück gesetzt wurde, beteiligt. qui Dossier wird oui avant dem erneuten écrivons gelöscht. ArrDel funktioniert la fois jedenfalls richtig. quoi mir encore aufgefallen ist : seulement, si je qui Dossier avec dem Explorer gänzlich gelöscht habe, sommes aussi qui Reste vom Dateiende verschwunden. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 29.11.2023 ▲ |
|
|
|
|
![Georg Teles: 30.11.2023](.././../../i/a/910.gif) Georg Teles | Nabend,
exposition la fois dans la ligne 7, füge simple la fois pour OpenRW fichier
solange qui Dossier "doppelt geöffnet" ist, scheint XProfan qui vieille Dateigröße de 177 Bytes statt neuen 78 auszulesen, weil cet gesperrt ist, so wird vous aussi avec Effacer pas gelöscht, daher verzwickt sich cela
ensuite klappts ![](.././../../i/s/__upl_ext_1111498557.gif)
dein ganzer Code:
Déclarer Long fichier, Memory étions[]
Set("Décimal", 2)
Struct Artikel = nom$(30), Preis!
Faible étions[], Artikel
SetSize étions[], 3
fichier = Assign($PROGDIR + "Waren.dat")
OpenRW fichier
Fermer fichier
With étions[0]
étions[0].nom$ = "Milch"
étions[0].Preis! = 0.99
EndWith
With étions[1]
étions[1].nom$ = "Butter"
étions[1].Preis! = 2.25
EndWith
With étions[2]
étions[2].nom$ = "Käse"
étions[2].Preis! = 3.55
EndWith
Imprimer "\nAus dem Array gelesen :"
AusgabeArray()
Sauver()
Imprimer "\nTaste pour Dateiausgabe..."
WaitKey
Ausgabe()
Imprimer "\nDelete phrase Nr. 2 dans Datei"
WaitKey
Arrdel étions[], 1, 1
Imprimer "\nAusgabe Array pour ArrDel"
Waitkey
AusgabeArray()
Sauver()
Imprimer "\nNach Sauver qui neuen Dossier."
Ausgabe()
WaitKey
Proc Sauver
Déclarer Long offset
Assign #1, $PROGDIR + "Waren.dat"
Effacer #1
Fermer #1
Assign #1, »
Assign #1, $PROGDIR + "Waren.dat"
OpenRW #1
offset = 0
WhileLoop 0, SizeOf(étions[]) - 1
BlockWrite #1, étions[&LOOP]
Inc offset, 35
Endwhile
Fermer #1
Assign #1, »
ENDPROC
Proc Ausgabe
Déclarer Long Records
Assign #1, $PROGDIR + "Waren.dat"
OpenRW #1
Records = GetFileSize(#1) / 34
Claire étions[]
SetSize étions[], Records
Seek #1, 0
WhileLoop 0, Records - 1
BlockRead(#1, étions[&LOOP], 0, SizeOf(étions[&LOOP]))
With étions[&LOOP]
Imprimer "Artikel :", .nom$, "Preis : ", .Preis!
EndWith
Endwhile
Fermer #1
Assign #1, »
ENDPROC
Proc AusgabeArray
WhileLoop 0, SizeOf(étions[]) - 1
With étions[&LOOP]
Imprimer "Artikel : ", étions[&LOOP].nom$, "Preis :", étions[&LOOP].Preis!
EndWith
Endwhile
Sauver()
ENDPROC
Fin
Grüße Georg |
|
|
| |
|
|