DLL | | | | H.Brill | Random Access DLL (Freeware) de MRK-Soft. qui Bearbeitung bzw. Lecture de Random Access Fichiers wurde déjà öfter im Forum nachgefragt. |
| | | 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. | 21.03.2009 ▲ |
| |
| | H.Brill | Anbei mon (X)Profan - variante. qui Datensätze volonté toujours à l' Ende angehängt. Pour cette peux on mais aussi Datensätze oui c'est ca sur qui Stelle changement. et quoi früher chez GW-BASIC & Co. pas ging (cela physikalische Effacer) allez par Umkopieren aussi.
Viel Amusement avec cela !
Déclarer Mem personnel, Handle btn1, btn2, btn3, btn4, btn5, grid, edit1, edit2, edit3, edit4
Déclarer Long satznr, anz, ende, knopf, pos
Déclarer String la ligne, fichier
Struct Mitarbeiter = nom$(30), prénom$(30), Gehalt&, Abteilung$(256)
Faible personnel, Mitarbeiter
fichier = $PROGDIR + "Mitarbeiter.dat"
Titre de la fenêtre "Personal"
Fenêtre 620, 400
Créer("Text", %HWnd, "Name : ", 10, 10, 80, 25)
edit1 = Créer("Edit", %HWnd, », 100, 10, 120, 25)
Créer("Text", %HWnd, "Vorname", 230, 10, 80, 25)
edit2 = Créer("Edit", %HWnd, », 310, 10, 80, 25)
Créer("Text", %HWnd, "Gehalt : ", 10, 40, 80, 25)
edit3 = Créer("Edit", %HWnd, », 100, 40, 80, 25)
Créer("Text", %HWnd, "Abteilung : ", 230, 40, 80, 25)
edit4 = Créer("Edit", %HWnd, », 310, 40, 250, 25)
btn1 = Créer("Button", %HWnd, "Speichern", 10, 80, 80, 25)
btn2 = Créer("Button", %HWnd, "Lesen", 100, 80, 80, 25)
btn3 = Créer("Button", %HWnd, "Ändern", 200, 80, 80, 25)
btn4 = Créer("Button", %HWnd, "Löschen", 300, 80, 80, 25)
btn5 = Créer("Button", %HWnd, "Ende", 500, 80, 60, 25)
grid = Créer("GridBox", %HWnd, "Nr;0;40;Namen;0;180;Vornamen;0;100;Gehälter;0;80;Abteilung;0;240", 0, 10,120, 580, 200)
ende = 0
Assign #1, fichier
WhileNot ende
WaitInput
Si Clicked(btn1)
' Sauver
Claire personnel
With personnel
.nom$ = GetText $(edit1)
.prénom$ = GetText $(edit2)
.Gehalt& = Val(GetText $(edit3))
.Abteilung$ = GetText $(edit4)
EndWith
Si GetText $(edit1) <> »
pos = GetCount(grid) + 1
la ligne = Str$(pos) + "|" + GetText $(edit1) + "|" + GetText $(edit2) + "|" + GetText $(edit3) + "|" + GetText $(edit4)
AddStrings(grid, la ligne)
SetCurSel grid, GetCount(grid) - 1
PutRecord(1, personnel)
SetText edit1, »
SetText edit2, »
SetText edit3, »
SetText edit4, »
D'autre
MessageBox("Kein nom angegeben !", "Fehler", 0)
EndIf
ElseIf Clicked(btn2)
' Lesen
Si FileExists(fichier)
anz = FileSize(fichier) / SizeOf(personnel)
ClearList grid
WhileLoop 0, anz - 1
GetRecord(1, &LOOP, personnel)
With personnel
la ligne = Str$(&LOOP + 1) + "|" + .nom$ + "|" + .prénom$ + "|" + Str$(.Gehalt&) + "|" + .Abteilung$
EndWith
AddStrings(grid, la ligne)
Claire personnel
Endwhile
D'autre
MessageBox("Noch aucun Dossier angelegt !", "Info", 0)
EndIf
ElseIf Clicked(btn3)
' Changement
Claire personnel
With personnel
.nom$ = GetText $(edit1)
.prénom$ = GetText $(edit2)
.Gehalt& = Val(GetText $(edit3))
.Abteilung$ = GetText $(edit4)
EndWith
satznr = GetCurSel(grid)
ChangeRecord(1, satznr, personnel)
satznr = GetCurSel(grid)
SetText grid, satznr, 1, GetText $(edit1)
SetText grid, satznr, 2, GetText $(edit2)
SetText grid, satznr, 3, GetText $(edit3)
SetText grid, satznr, 4,GetText $(edit4)
ElseIf Clicked(btn4)
' Delete record
satznr = GetCurSel(grid)
knopf = MessageBox("Sind vous wirklich sûrement ?", "Datensatz löschen", 292)
Si knopf = 6
DeleteString(grid, satznr)
DeleteRecord(1, satznr + 1, personnel)' GT. 0 - Position
EndIf
ElseIf Clicked(btn5)
ende = 1
ElseIf Clicked(grid)
pos = GetCurSel(grid)
Si pos > -1
la ligne = GetString$(grid, GetCurSel(grid))
SetText edit1, $ Substr(la ligne, 2, "|")
SetText edit2, $ Substr(la ligne, 3, "|")
SetText edit3, $ Substr(la ligne, 4, "|")
SetText edit4, $ Substr(la ligne, 5, "|")
EndIf
EndIf
Cas %Key = 2 : ende = 1
Endwhile
Dispose personnel
Proc PutRecord
Paramètres Long canal, Memory bereich
Déclarer Long pos
OpenRW #canal
Seek #canal, GetFileSize(#canal)
BlockWrite #canal, bereich, 0, SizeOf(bereich)
Fermer #canal
ENDPROC
Proc GetRecord
Paramètres Long canal, satznr, Memory bereich
Déclarer Long size, offset, records
OpenRW #canal
offset = satznr * SizeOf(bereich)
Seek #canal, offset
BlockRead(#canal, bereich, 0, SizeOf(bereich))
Fermer #canal
ENDPROC
Proc ChangeRecord
Paramètres Long canal, satznr, Memory bereich
Déclarer Long offset, records
OpenRW #canal
records = GetFileSize(#canal) / SizeOf(bereich)
Si satznr = 0
offset = 0
ElseIf (satznr > 0) And (satznr <= records)
offset = satznr * SizeOf(bereich)
EndIf
Seek #canal, offset
BlockWrite #canal, bereich
Fermer #canal
ENDPROC
Proc DeleteRecord
Paramètres Long canal, satznr, Memory bereich
Déclarer Long offset, records
Assign #2, $PROGDIR + "Datei2.dat"
OpenRW #canal
OpenRW #2
offset = 0
records = GetFileSize(#canal) / SizeOf(bereich)
Claire bereich
WhileLoop 1, records
Si non &LOOP = satznr
Seek #canal, offset
BlockRead(#canal, bereich, 0, SizeOf(bereich))
Seek #2, GetFileSize(#2)
BlockWrite #2, bereich, 0, SizeOf(bereich)
Claire Bereich
EndIf
Inc offset, SizeOf(bereich)
Endwhile
Fermer #canal
Effacer #canal
OpenRW #canal
offset = 0
records = GetFileSize(#2) / SizeOf(bereich)
WhileLoop 1, records
Seek #2, offset
BlockRead(#2, bereich, 0, SizeOf(bereich))
Seek #canal, GetFileSize(#canal)
BlockWrite #canal, bereich, 0, SizeOf(bereich)
Inc offset, SizeOf(bereich)
Endwhile
Fermer #canal
Fermer #2
Effacer #2
Assign #2, »
ENDPROC
Fin
peut-être hat oui encore quelqu'un 'alte Schätzchen' aus qui DOS-Zeit et voudrais vous ins Windowszeitalter retten. je denke la fois, qui cela avec cela aussi allez, zumal les numéros et Buchstaben beim OEM-Zeichensatz à qui gleichen Stelle stehen. si pas, devrait on la fois avec OemToAnsi$() ou bien qui Bereichsfunktion Char$() essayer. und dir oui pratique seulement tout autor, qui chez DOS encore aucun abschließende Nullbytes à den Cordes étions.
Bien sûr ist es bien, aussi den GW-BASIC quelltext dabei trop avons, um den FIELD - Befehl avec seiner Struktur trop voyons. cela gleiche pouvoir on ici avec Struct et anschließendem Dimmen eines Bereichs. un Assign encore en supplément et qui Vorbereitungen sommes fertig. |
| | | 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. | vor 6 Tagen ▲ |
| |
|
Zur DLLOptions du sujet | 5.519 Views |
Themeninformationencet Thema hat 1 participant: |
|