Forum | | | | - Seite 1 - |
| Wilfried Friebe | KompilierenMarkierenSeparieren-Begin------------------------------------------------------------------
Declare Anzahl%, i%, Name$, Browse$, länge%
Cls
TextColor @RGB(255, 0, 100), -1
Set(CharSet, 0)
UseFont ARIAL, 15, 10, 1, 0, 0
@db(Open, #1,Musik.DBF)
@db(Use, #1)
Print db-Struktur von Musik.DBF
Print Datensätze: ;&dbRecCount
Print Felder: ;%dbFCount
Print Satzgröße: ;%dbRecSize; Byte
Print Headergröße: ;%dbHeader; Byte
Print Letzte Änderung: ;$dbLUpdate
Anzahl% = %dbFCount
i% = 1
WhileNot i% > Anzahl%
@db(GetField, i%)
Print $dbFName,$dbFType,%dbFLen,%dbFDecs
Print
Print
Inc i%
EndWhile
@db(Close, #1)
Waitinput
Name$ = @LoadFile$(Welche Datei,*.DBF)
print Name$
@db(Open, #1,Name$)
@db(Use, #1)
Anzahl% = %dbFCount
i% = 1
WhileNot i% > Anzahl%
@db(GetField, i%)
länge%=%dbFLen
länge%= länge%*5
@set(Decimals,0)
Browse$=Browse$+$dbFName+;+$dbFName+;+str$(länge%)+;
Inc i%
EndWhile
@db(Browse, 10,10,ADRESS-TABELLE,10, Browse$ ,3)
print &dbRecCount
@db(AppendBlank)
@dbPack()
@dbClose(#1)
End
Ich habe X Profan und Windows XP Bildschirmauflösung 1280-1024 und getestet auch mit 1024-768 bei beiden Auflösungen ist der gleiche Fehler aufgetreten mir fehlen unten bei der Toolbar ein paar Pixel (siehe anhängendes Bild) das gleiche Programm auf einem Notebook mit Windows ME mit einer Auflösung von 1024-768 einwandfrei wer kann mir da helfen |
| | | Board MSI B450M BAZOOKA CPU AMD Ryzen 7 2700x 8 Core 3,7-4,2 GH 32 Gb Ram NVIDIA GeForce GTX 3060 12 GB Ram Window 11 Prof 64 Bit
Sun-Guru-Barebone CPU I7-9750H 16 GB Ram NVIDIA GeForce GTX1660TI 6 GB Ram Window 11 Hom 64 Bit
Profan 4.5 bis Xprofan 14 Ein frisch geschriebenes Programm hat meistens einen großen Fehler.Sollte man versuchen diesen großen Fehler zu beseitigen, hat man viele kleine Fehler "Grins" | 22.04.2007 ▲ |
| |
| | | | | - Seite 2 - |
| Wilfried Friebe | Na gut Erstmal Danke jedenfalls lag es nicht an meinen beschränkten programierfähigkeiten GRINS werde mich also gedulden war nicht allzuleicht die umgewöhnung von profan 4,5 auf X Prfan 10 aber langsam gehts
Gruß Wilfried |
| | | Board MSI B450M BAZOOKA CPU AMD Ryzen 7 2700x 8 Core 3,7-4,2 GH 32 Gb Ram NVIDIA GeForce GTX 3060 12 GB Ram Window 11 Prof 64 Bit
Sun-Guru-Barebone CPU I7-9750H 16 GB Ram NVIDIA GeForce GTX1660TI 6 GB Ram Window 11 Hom 64 Bit
Profan 4.5 bis Xprofan 14 Ein frisch geschriebenes Programm hat meistens einen großen Fehler.Sollte man versuchen diesen großen Fehler zu beseitigen, hat man viele kleine Fehler "Grins" | 23.04.2007 ▲ |
| |
| | | So habs und zwar muss man nur untere Prozedur einbinden - wenn man statt dbbrowse besser _dbbrowse eingibt dann wird das Fenster auf korrekte 514x265 Pixel Innengrösse gebracht. Natürlich ist das unsauberes Schummeln!
Hierfür einfach folgende Funktion im Source platzieren: (XPSE-original-Variante! / unten die nicht-XPSE-Variante) KompilierenMarkierenSeparieren
_dbbrowse (long a,b,string c,long d,string e,long f) {
long err
string sid=str$(gettickcount)
long timer=external(user32.dll,SetTimer,0,0,250,ProcAddr(_dbbrowse_internal,0))
dbbrowse(a,b,sid,d,e,f)
_dbbrowse_internal {
long h=findwindow(sid)
string s=gettext$(h)
if (substr$(s,1, )==sid) {
external(user32.dll,KillTimer,0,timer)
settext h,c+ +substr$(s,2, )
setwindowpos h=a,b - 320,200;0
setwindowpos h=a,b - ((320-width(h))+514),((200-height(h))+265);0
} else {
err+
case (err==40) : external(user32.dll,KillTimer,0,timer)
}
}
}
Nicht-XPSE-Variante: KompilierenMarkierenSeparieren
proc _DBBROWSE
PARAMETERS A&,B&,C$,D&,E$,F&
var ERR&=0
var SID$=STR$(&GETTICKCOUNT)
var TIMER&=EXTERNAL(user32.dll,SetTimer,0,0,250,PROCADDR(_dbbrowse_internal,0))
DBBROWSE(A&,B&,SID$,D&,E$,F&)
proc _DBBROWSE_INTERNAL
var H&=FINDWINDOW(SID$)
var S$=GETTEXT$(H&)
IF (SUBSTR$(S$,1, )=SID$)
EXTERNAL(user32.dll,KillTimer,0,TIMER&)
SETTEXT H&,C$+ +SUBSTR$(S$,2, )
SETWINDOWPOS H&=A&,B& - 320,200;0
SETWINDOWPOS H&=A&,B& - ((320-WIDTH(H&))+514),((200-HEIGHT(H&))+265);0
ELSE
INC ERR&
IF (ERR&=40)
EXTERNAL(user32.dll,KillTimer,0,TIMER&)
ENDIF
ENDIF
endproc
endproc
und hier mein Testprogramm (achtung XPSE!) KompilierenMarkierenSeparierencls
Assign #1, ADRESS.STR
Rewrite #1
Print #1, NAME; C; 30; 0
Print #1, VORNAME; C; 30; 0
Print #1, STRASSE; C; 30; 0
Print #1, PLZ_ORT; C; 30; 0
Print #1, TELEFON; C; 20; 0
Print #1, GEBURT; D; 8; 0
Print #1, GEHALT; N; 10; 2
Print #1, NOTIZ; M; 10; 0
Close #1
db(Create, ADRESS.STR, ADRESS.DBF)
@dbOpen(#1,ADRESS.DBF)
@dbUse(#1)
dbCreateIndex Name+Vorname > iName
@dbIndex(iName)
_dbbrowse(100,10,Adressen,10,NAME;Name:;100,3)
@dbPack()
@dbClose(#1)
_dbbrowse (long a,b,string c,long d,string e,long f) {
long err
string sid=str$(gettickcount)
long timer=external(user32.dll,SetTimer,0,0,250,ProcAddr(_dbbrowse_internal,0))
dbbrowse(a,b,sid,d,e,f)
_dbbrowse_internal {
long h=findwindow(sid)
string s=gettext$(h)
if (substr$(s,1, )==sid) {
external(user32.dll,KillTimer,0,timer)
settext h,c+ +substr$(s,2, )
setwindowpos h=a,b - 320,200;0
setwindowpos h=a,b - ((320-width(h))+514),((200-height(h))+265);0
} else {
err+
case (err==40) : external(user32.dll,KillTimer,0,timer)
}
}
}
Und im Anhang eine lauffähige Exe. |
| | | | |
| | | Ja, ja - der iF |
| | | | |
| | Wilfried Friebe | KompilierenMarkierenSeparierendeclare anzahlspalten& ,Dateiname$ ,Spaltenname$
Declare Text$ ,Z& ,Dateiname1$ ,Dateiname2$
cls
anzahlspalten&=0
WhileNot anzahlspalten&
anzahlspalten& = @Input$(Wert eingeben:, Wieviele Spalten ?, anzahlspalten&)
EndWhile
Dateiname$ = @Input$(Namen eingeben:, Welcher Dateiname ? , Dateiname$)
Dateiname1$=Dateiname$+.STR
Assign #1, Dateiname1$
Rewrite #1
print Bitte nach ein ander den Namen des Feldes, dessen Typ,
print dessen Länge und die Anzahl der Dezimalstellen
print getrennt durch ein ;
print die Feldtypen C=Text, D=Datum, N=Zahlen, L=Ja/Nein und M=Memo-Feld
print NAME; C; 30; 0
WhileLoop anzahlspalten&
Spaltenname$ = @Input$(Namen eingeben:, Welcher Spaltenname ? , &loop)
Print #1, Spaltenname$
endwhile
Close #1
Dateiname2$=Dateiname$+.DBF
db(Create, Dateiname1$ , Dateiname2$)
Waitinput
KompilierenMarkierenSeparieren-Begin------------------------------------------------------------------
proc _DBBROWSE
PARAMETERS A&,B&,C$,D&,E$,F&
var ERR&=0
var SID$=STR$(&GETTICKCOUNT)
var TIMER&=EXTERNAL(user32.dll,SetTimer,0,0,250,PROCADDR(_dbbrowse_internal,0))
DBBROWSE(A&,B&,SID$,D&,E$,F&)
proc _DBBROWSE_INTERNAL
var H&=FINDWINDOW(SID$)
var S$=GETTEXT$(H&)
IF (SUBSTR$(S$,1, )=SID$)
EXTERNAL(user32.dll,KillTimer,0,TIMER&)
SETTEXT H&,C$+ +SUBSTR$(S$,2, )
SETWINDOWPOS H&=A&,B& - 320,200;0
SETWINDOWPOS H&=A&,B& - ((320-WIDTH(H&))+514),((200-HEIGHT(H&))+265);0
ELSE
INC ERR&
IF (ERR&=40)
EXTERNAL(user32.dll,KillTimer,0,TIMER&)
ENDIF
ENDIF
endproc
endproc
Declare Anzahl%, i%, Name$, Browse$, länge%, cy%, cy1%
Cls
Name$ = @LoadFile$(Welche Datei,*.DBF)
@db(Open, #1,Name$)
@db(Use, #1)
Anzahl% = %dbFCount
i% = 1
WhileNot i% > Anzahl%
@db(GetField, i%)
länge%=%dbFLen
länge%= länge%*5
@set(Decimals,0)
Browse$=Browse$+$dbFName+;+$dbFName+;+str$(länge%)+;
Inc i%
EndWhile
_dbbrowse (10,10,Adress-Tabelle,10, Browse$ ,3)
@db(Browse, 10,10,ADRESS-TABELLE,10, Browse$ ,3)
print &dbRecCount
@db(AppendBlank)
@dbPack()
@dbClose(#1)
End
Irgendwie gehts doch wohl nicht mit dem ersten Programm erstelle ich eine DB Datei mit dem zweiten lese ich diese datei dann aus und bearbeite sie ich habe die MUSIK.DBF Datei als MUSIK.txt im Anhang dazugetan Die EXE und die andere Datei laufen nur solange wie nur eine Spalte ist bei mehreren zeigt das Prog falsch an ist eigendlich ja auch nur ein Schönheitsfehler im zweiten Programm sind beide Befehle drin _dbbrownse und @db(brownse) und die neue Procedur |
| | | Board MSI B450M BAZOOKA CPU AMD Ryzen 7 2700x 8 Core 3,7-4,2 GH 32 Gb Ram NVIDIA GeForce GTX 3060 12 GB Ram Window 11 Prof 64 Bit
Sun-Guru-Barebone CPU I7-9750H 16 GB Ram NVIDIA GeForce GTX1660TI 6 GB Ram Window 11 Hom 64 Bit
Profan 4.5 bis Xprofan 14 Ein frisch geschriebenes Programm hat meistens einen großen Fehler.Sollte man versuchen diesen großen Fehler zu beseitigen, hat man viele kleine Fehler "Grins" | 23.04.2007 ▲ |
| |
| | | @Horst: Könntest Du es ihm zusammenführen? Ich muss nähhmlich los... |
| | | | |
| | | | - Seite 3 - |
| | | | | | | |
| | | So habs mit Deiner Musik.Dbf probiert - da scheitert ja schon der normale Aufruf - irgendwas stimmt also mit der Sache so noch nicht - aber es scheint nicht an meiner Ersatzfunktion zu liegen. Hier der Code den ich getestet habe: KompilierenMarkierenSeparieren-Begin------------------------------------------------------------------
Declare Anzahl%, i%, Name$, Browse$, länge%, cy%, cy1%
Cls
Name$ = musik.dbf
@db(Open, #1,Name$)
@db(Use, #1)
Anzahl% = %dbFCount
i% = 1
print anzahl%
WhileNot i% > Anzahl%
@db(GetField, i%)
länge%=%dbFLen
länge%= länge%*5
@set(Decimals,0)
Browse$=Browse$+$dbFName+;+$dbFName+;+str$(länge%)+;
Inc i%
EndWhile
dbbrowse (10,10,Adress-Tabelle,10, Browse$ ,3)
@db(Browse, 10,10,ADRESS-TABELLE,10, Browse$ ,3)
print &dbRecCount
@db(AppendBlank)
@dbPack()
@dbClose(#1)
End
|
| | | | |
| | | Thomas Freier
kann ich nur bestätigen. Mit einer echten *dbf geht es. Seine *.txt ist weder eine *.csv noch eine *.dbf. Bei der Verwendung von Browse sollte man eigentlich eigentlich alles fest vorgeben. Mein Muster hatte 20 Felder, da muss man das Fenster immer hin und her schieben. Grrr! Ist eben nur ein Hilfsmittel. Dann lieber Listview oder GridBoxen.
Gruß Thomas |
| | | | |
| | Wilfried Friebe | Na denn mit der .DFB Datei ist wohl bei der umwandlung is .TXT was passiert sind beide unterschiedlich aber die .DFB Datei konnte ich leider nicht schicken, da hat euer Prog. nicht mitgemacht zum Programm selber muß ich sagen es läuft so eigendlich richtig bis auf den Schönheitsfehler . Sind alles im Moment noch Fragmente aber das wird noch. Werde weiter dran arbeiten . Mal sehen was das dann wird. Ich melde mich dann wieder.
Der Kopf muß richtig rauchen damit man da oben so ein kleines bischen fit bleibt. In meinem alter von 62 Jahren sollte man da was tun.
Danke und Guß erstmal Wilfried
|
| | | Board MSI B450M BAZOOKA CPU AMD Ryzen 7 2700x 8 Core 3,7-4,2 GH 32 Gb Ram NVIDIA GeForce GTX 3060 12 GB Ram Window 11 Prof 64 Bit
Sun-Guru-Barebone CPU I7-9750H 16 GB Ram NVIDIA GeForce GTX1660TI 6 GB Ram Window 11 Hom 64 Bit
Profan 4.5 bis Xprofan 14 Ein frisch geschriebenes Programm hat meistens einen großen Fehler.Sollte man versuchen diesen großen Fehler zu beseitigen, hat man viele kleine Fehler "Grins" | 24.04.2007 ▲ |
| |
| | | Hey - packe einfach Deine DBF in eine ZIP (so machen wir das hier bei Dateiendungen welche hier nicht erlaubt sind) - und lade die ZIP hoch. |
| | | | |
| | Detlef Tussing | Das Problem besteht wohl immer noch |
| | | | |
| | Thomas Freier | | | | | |
|
AntwortenThemenoptionen | 10.718 Betrachtungen |
ThemeninformationenDieses Thema hat 8 Teilnehmer: |