041
03.03.2007, 15:14 Uhr
spakko
|
Wer Interesse hat, kann folgendes Projekt "zu Ende" bzw. fortführen. Es ist in Purebasic (Demo gibts unter http://www.purebasic.de) geschrieben. Hier ist der Quellkode des Programm's "Bitmuster.pb" :
Quellcode: | Structure Daten RomTyp.l Bitmuster.s Beschreibung.s EndStructure
Global Dim Bitmuster.Daten(499)
Procedure.s App_Path() Protected Tmp.s tmp=GetPathPart(ProgramFilename()) If Right(tmp,1)<>"" : tmp=tmp+"" : EndIf ProcedureReturn tmp EndProcedure
Procedure Romtypen_Lesen() Protected FN.l, tmp.s, schalter.l,text.s, Idx.l
FN = ReadFile(#PB_Any, App_Path()+"Bitmuster.dat") ;Debug app_path() schalter=0 ClearGadgetItemList(0) Repeat tmp=Trim(ReadString(FN)) If tmp<>"" If Left(tmp,1)="[" And schalter=1 : schalter=0 : EndIf ;Debug tmp If schalter=1 Idx=Val(StringField(tmp,1,";")) text=StringField(tmp,2,";") AddGadgetItem(0, -1, text) SetGadgetItemData(0, CountGadgetItems(0)-1,Idx) EndIf If tmp="[Typen]" : schalter=1 : EndIf EndIf Until Eof(FN) CloseFile(FN) EndProcedure
Procedure Bitmuster_Lesen(romtyp.l) Protected FN.l, tmp.s, schalter.l,Idx.l,rtyp.l,text.s
FN = ReadFile(#PB_Any, App_Path()+"Bitmuster.dat") ;Debug app_path() schalter=0 ClearGadgetItemList(1) Repeat tmp=Trim(ReadString(FN)) If tmp<>"" If Left(tmp,1)="[" And schalter=1 : schalter=0 : EndIf ;Debug tmp If schalter=1 Idx=Val(StringField(tmp,1,";")) rtyp=Val(StringField(tmp,2,";")) If rtyp=romtyp text=StringField(tmp,3,";")+" ; "+StringField(tmp,4,";") AddGadgetItem(1, -1, text) SetGadgetItemData(1, CountGadgetItems(1)-1,Idx) EndIf EndIf If tmp="[Bitmuster]" : schalter=1 : EndIf EndIf Until Eof(FN) CloseFile(FN) EndProcedure
Procedure Bitmuster_Aendern(Eintrag.l,Bitmuster.s,Beschreibung.s,Romtyp.l) Protected FN1.l,FN2.l, tmp.s, schalter.l,Idx.l,rtyp.l,text.s
DeleteFile(App_Path()+"~bimutmp.dat")
FN1 = ReadFile(#PB_Any, App_Path()+"Bitmuster.dat") FN2 = OpenFile(#PB_Any, App_Path()+"~bimutmp.dat") ;Debug app_path() schalter=0 Repeat tmp=Trim(ReadString(FN1)) If tmp<>"" If Left(tmp,1)="[" And schalter=1 : schalter=0 : EndIf ;Debug tmp If schalter=1 Idx=Val(StringField(tmp,1,";")) If Idx=Eintrag text=Str(Eintrag)+";"+Str(Romtyp)+";"+Bitmuster+";"+Beschreibung WriteStringN(FN2,text) Else WriteStringN(FN2,tmp) EndIf Else WriteStringN(FN2,tmp) EndIf If tmp="[Bitmuster]" : schalter=1 : EndIf EndIf Until Eof(FN1) FlushFileBuffers(FN1) FlushFileBuffers(FN2) CloseFile(FN1) CloseFile(FN2) DeleteFile(App_Path()+"Bitmuster.dat") RenameFile(App_Path()+"~bimutmp.dat",App_Path()+"Bitmuster.dat") EndProcedure
Procedure.l Bitmuster_Neu(Bitmuster.s,Beschreibung.s,Romtyp.l) Protected FN1.l,FN2.l, tmp.s, schalter.l,Idx.l,rtyp.l,text.s, merker.l
DeleteFile(App_Path()+"~bimutmp.dat")
;--- neuen Index suchen FN1 = ReadFile(#PB_Any, App_Path()+"Bitmuster.dat") ;Debug app_path() schalter=0 muster=0 Repeat tmp=Trim(ReadString(FN1)) If tmp<>"" If Left(tmp,1)="[" And schalter=1 : schalter=0 : EndIf ;Debug tmp If schalter=1 Idx=Val(StringField(tmp,1,";")) If Idx>muster : muster=Idx : EndIf EndIf If tmp="[Bitmuster]" : schalter=1 : EndIf EndIf Until Eof(FN1) CloseFile(FN1) muster=muster+1
;--- FN1 = ReadFile(#PB_Any, App_Path()+"Bitmuster.dat") FN2 = OpenFile(#PB_Any, App_Path()+"~bimutmp.dat") ;Debug app_path() schalter=0 Repeat tmp=Trim(ReadString(FN1)) If tmp<>"" If Left(tmp,1)="[" And schalter=1 schalter=0 text=Str(muster)+";"+Str(Romtyp)+";"+Bitmuster+";"+Beschreibung WriteStringN(FN2,text) EndIf WriteStringN(FN2,tmp) If tmp="[Bitmuster]" : schalter=1 : EndIf EndIf Until Eof(FN1) FlushFileBuffers(FN1) FlushFileBuffers(FN2) CloseFile(FN1) CloseFile(FN2) DeleteFile(App_Path()+"Bitmuster.dat") RenameFile(App_Path()+"~bimutmp.dat",App_Path()+"Bitmuster.dat") ProcedureReturn muster EndProcedure
Procedure Bitmuster_Sortieren() Protected FN.l, tmp.s, schalter.l,zae.l
FN = ReadFile(#PB_Any, App_Path()+"Bitmuster.dat") ;Debug app_path() schalter=0 zae=0 Repeat tmp=Trim(ReadString(FN)) If tmp<>"" If Left(tmp,1)="[" And schalter=1 : schalter=0 : EndIf ;Debug tmp If schalter=1 Bitmuster(zae)\RomTyp =Val(StringField(tmp,2,";")) Bitmuster(zae)\Bitmuster =StringField(tmp,3,";") Bitmuster(zae)\Beschreibung=StringField(tmp,4,";") zae=zae+1 EndIf If tmp="[Bitmuster]" : schalter=1 : EndIf EndIf Until Eof(FN) Or zae=500 CloseFile(FN) zae=zae-1 ;--- Sortieren SortStructuredArray(Bitmuster(), 2, OffsetOf(Daten\Bitmuster), #PB_Sort_String, 0, zae)
EndProcedure
If OpenWindow(0, 200, 200, 510, 400, " Bitmuster Datenbank", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
If OpenWindow(1, 200, 200, 290, 140, " Eintrag", #PB_Window_WindowCentered | #PB_Window_SystemMenu |#PB_Window_Invisible , WindowID(0) ) If CreateGadgetList(WindowID(1)) TextGadget (100, 5, 5,100, 20, "Bitmuster :") StringGadget(101, 5, 25, 50, 20, "") TextGadget (102, 5, 50,100, 20, "Beschreibung :") StringGadget(103, 5, 70,280, 20, "") ButtonGadget(104, 5,110, 90, 20, "Speichern") ButtonGadget(105,195,110, 90, 20, "Abbrechen") EndIf EndIf
If CreateGadgetList(WindowID(0)) ComboBoxGadget(0, 5, 5, 100, 390) Romtypen_Lesen() ;SetGadgetItemState(0, 0, 1) SetGadgetState(0, 0) ListViewGadget(1, 110, 5, 300, 390) Bitmuster_Lesen(0) SetGadgetItemState(1, CountGadgetItems(1)-1, 1) SetGadgetState(1, CountGadgetItems(1)-1) ButtonGadget(2,415,5,90,20,"Neu") ButtonGadget(3,415,30,90,20,"Bearbeiten") ButtonGadget(4,415,55,90,20,"Löschen") DisableGadget(4, 1) EndIf
Repeat EventID = WaitWindowEvent()
Select EventID Case #PB_Event_CloseWindow If GetActiveWindow() = 1 HideWindow(1,1) DisableWindow(0,0) Else Quit = 1 EndIf Case #PB_Event_Gadget Select EventGadget() Case 0 If EventType()=1 Bitmuster_Lesen(GetGadgetItemData(0,GetGadgetState(0))) If CountGadgetItems(1)=0 AddGadgetItem(1,-1,"keine Einträge") DisableGadget(3,1) Else DisableGadget(3,0) EndIf SetGadgetItemState(1,CountGadgetItems(1)-1 , 1) SetGadgetState(1, CountGadgetItems(1)-1) EndIf Case 2 HideWindow(1,0) SetActiveWindow(1) SetWindowTitle(1," neuer Eintrag") SetGadgetData(100,-1) ;Neu SetGadgetData(102,GetGadgetState(0)) ;Romtyp SetGadgetText(101,"") SetGadgetText(103,"") DisableWindow(0,1) SetActiveGadget(101) Case 3 les.s=GetGadgetItemText(1,GetGadgetState(1),0) If les<>"keine Einträge" And les<>"" tmp1.l=GetGadgetItemData(1,GetGadgetState(1)) HideWindow(1,0) SetWindowTitle(1," Eintrag ändern ("+Str(tmp1)+")") SetGadgetData(100,tmp1) ;Index Eintrag SetGadgetData(102,GetGadgetState(0)) ;Romtyp SetGadgetText(101,Trim(StringField(les,1,";"))) SetGadgetText(103,Trim(StringField(les,2,";"))) SetActiveWindow(1) DisableWindow(0,1) SetActiveGadget(101) EndIf Case 104 tmp2.s=Trim(GetGadgetText(101)) If tmp2<>"" tmp3.s=Trim(GetGadgetText(103)) If tmp3<>"" tmp2=ReplaceString(tmp2,";",",",1,1) tmp3=ReplaceString(tmp3,";",",",1,1) If GetGadgetData(100)=-1 ;--- Neu If CountGadgetItems(1)=1 And GetGadgetItemText(1,0,0)="keine Einträge" ClearGadgetItemList(1) EndIf Idx=Bitmuster_Neu(tmp2,tmp3,GetGadgetData(102)) AddGadgetItem(1, -1, tmp2+" ; "+tmp3) tmp1=CountGadgetItems(1)-1 SetGadgetItemData(1, tmp1,Idx) SetGadgetItemState(1,tmp1, 1) SetGadgetState(1,tmp1) Else ;--- Ändern Bitmuster_Aendern(GetGadgetData(100),tmp2,tmp3,GetGadgetData(102)) tmp1=GetGadgetState(1) SetGadgetItemText(1,tmp1,tmp2+" ; "+tmp3,1) SetGadgetItemState(1,tmp1, 1) SetGadgetState(1,tmp1) EndIf HideWindow(1,1) DisableWindow(0,0) Else MessageRequester("Warnung !","Feld 'Beschreibung' darf nicht leer sein !"+Space(5),48) EndIf Else MessageRequester("Warnung !","Feld 'Bitmuster' darf nicht leer sein !"+Space(5),48) EndIf Case 105 HideWindow(1,1) DisableWindow(0,0) EndSelect EndSelect
Until Quit = 1 CloseWindow(1) EndIf
End ; IDE Options = PureBasic v4.02 (Windows - x86) ; CursorPosition = 188 ; FirstLine = 19 ; Folding = g- ; Watchlist = Bitmuster_Lesen()>FN;Bitmuster_Lesen()>tmp |
Hier ist die Konfigurationsdatei "Bitmuster.dat" :
Quellcode: | [Typen] 0;EMR U881 1;ROM U401 2;ROM U505 3;ROM U2616 4;ROM U2364 5;ROM U2365 [Bitmuster] 0;0;004;noch unbekannt 1;1;005;Zeichengenerator ? 2;2;068;PC1715 Floppycontroller ROM1 3;2;069;PC1715 Floppycontroller ROM2 4;2;075;LC80 ROM1 5;2;076;LC80 ROM2 6;3;100;Z1013 Zeichensatz 7;3;111;Zeichensatz KC87.1 8;3;115;Zeichensatz KC87.2 9;3;204;Z1013 Betriebssystem 2.02
|
Viel Spass ! |