| 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!)
 KompilierenMarkierenSeparieren
 cls
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
 | | KompilierenMarkierenSeparieren
 declare 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
 |  |  |  |  |  |  |  |  |  | 
 
 
 | 
 
 Antworten| Themenoptionen | 12.674 Betrachtungen | 
 ThemeninformationenDieses Thema hat 8 Teilnehmer: |