Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wordprogramm selbst schreiben -> Fonts
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.06.2010, 20:24    Titel: Antworten mit Zitat

Wann lernst du es, dass wir den Code selbst kompilieren können? Ohne Code keine Bewertung! EXE-Dateien werden nicht ausgeführt!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2010, 20:41    Titel: Antworten mit Zitat

Code:

screenres 600,400,32
dim text (1 to 100) as string
dim as longint i,ii,a
dim aa as longint
dim suchen as string
dim asci as integer
color &h000000,&hffffff
cls

redim array(1 to 10000000) as string
redim position(1 to 1000000) as integer
redim position1(1 to 1000000) as string
dim posi as longint
dim as string x,y,f
dim as integer xplan,yplan
dim as integer suchen1,suchen2
dim zusammen as longint

kill "zusammen.bin"
for ii = 32 to 255
    a = 0
   
    open str(ii)+".bin" for input as #1
    do
    a = a + 1
    input #1, array(a)
    loop until eof(1)
    close #1
    open "zusammen.bin" for append as #2
        for i = 1 to a
        print #2, array(i)
        next
    close #2
    posi = posi + 1
    aa = aa + a
    position(posi) = aa
   
next

redim arr(1 to aa) as string

for i = 1 to posi
if i = 1 then
position1(i) = str(1) +"|"+ str( position(i))
else
position1(i) = str(position(i-1)+1) +"|"+ str( position(i))
end if
next

    a = 0
    open "zusammen.bin" for input as #2
    do
        a = a + 1
        input #2, arr(a)
    loop until eof(2)
    close #2
   


dim as string xy
dim as string x1,x2

dim textu as integer
dim wandel as string

dim ads as integer
dim pufferxplan(1 to 10) as integer
dim pufferyplan(1 to 10) as integer
dim pufferx (1 to 10) as integer
dim puffery(1 to 10) as integer
ads = 1
do
textu = GETKEY
wandel = chr(textu)

if textu = 27 or textu = 27647 then
    end
end if
if textu = 8 then

    text(ads) = mid(text(ads),1,len(text(ads))-1)
    line (xplan-val(x),yplan+1)-(xplan,yplan+val(y)),&hffffff,BF
    if len(text(1)) = 0 then
    else
    if len(text(ads)) = 0 then
    ads = ads -1
    yplan = yplan - val(y)
    'locate 30,1
    'print mid(text(ads),len(text(ads)),len(text(ads)))
    textu = GETKEY
    if textu = 8 then
        line (pufferxplan(ads)-pufferx(ads),pufferyplan(ads)+1)-(pufferxplan(ads)+pufferx(ads),pufferyplan(ads)+puffery(ads) ),&hffffff,BF
   
    text(ads) = mid(text(ads),1,len(text(ads))-1)   

    end if
end if
end if
else
 
end if
xplan = 0


if textu = 13 then
ads = ads + 1
yplan = yplan + val(y)
end if
if textu = 8 or textu = 13 then
else
text(ads) = text(ads) + wandel     
end if

for ii = 1 to len(text(ads))

    suchen = mid(text(ads),ii,1)
    asci = asc(suchen)
    xy = position1(asci-31)
    suchen1 = instr(xy,"|")

    x1 = mid(xy,1,suchen1-1)
    x2 = mid(xy,suchen1+1,len(xy))

    for i = val(x1) to val(x2)

        suchen1 = instr(arr(i),"|")
        suchen2 = instr(arr(i),"-")
       
        x = mid(arr(i),1,suchen1-1)
        y = mid(arr(i),suchen1+1,suchen2-1)
        f = mid(arr(i),suchen2+1, len(arr(i)))

        if f = "1" then
        pset(xplan+val(x),yplan+val(y)),&h000000
        else
        pset(xplan+val(x),yplan+val(y)),&hffffff
        end if       
    next
    xplan = xplan + val(x)
    pufferxplan(ads) = xplan
    pufferyplan(ads) = yplan
    pufferx(ads) = val(x)
    puffery(ads) = val(y)       
   
    if xplan > 550 then
        yplan = yplan + val(y)
        ads = ads + 1
        xplan = 0
        ii = len(text(ads-1))
    end if
   
next

loop


Warum so aggressiv?

Wie man sieht, liest er alle ASCI Fonts aus und vereinigt das ganze dann in der Datei zusammen.bin.

Dann kommt etlicher Code...
Den zu beschreiben würde sehr viel Zeit kosten.

Ich muss den Code eh nochmal überarbeiten, denn val und str kostet viel Zeit.
Ich meine einen String in einen integer oder umgekehrt zu wandeln.

Edit: Der Code wurde um 21:05 nochmal geändert


Zuletzt bearbeitet von Andy19312 am 11.06.2010, 21:05, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.06.2010, 20:49    Titel: Antworten mit Zitat

Andy19312 hat Folgendes geschrieben:
Warum so aggressiv?

Du willst Feedback. Wie soll ich deinen Arbeit bewerten, wenn ich nur eine vorkompilierte EXE vorgesetzt bekomme und ich noch nicht mal weiß, wo die herkommt? Das Programm crasht hier übrigens immer wieder (vor allem beim Beenden). Und 700kb+ für so eine Datei ist eindeutig übertrieben. Wenn ich Lust hab, kann ich mich mal kurz hinsetzen und was zusammenwürfeln, was klein und effektiv ist.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2010, 20:51    Titel: Antworten mit Zitat

wie crashed beim beenden?.
MAn darf auch nicht mehr Zeilen schreiben, wie der screen hergibt.
Sonst dürfte das Programm nicht abstürzen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.06.2010, 20:53    Titel: Antworten mit Zitat

Andy19312 hat Folgendes geschrieben:
wie crashed beim beenden?.


_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2010, 20:59    Titel: Antworten mit Zitat

also das Programm stürzt bei dir nicht während dem ab, wenn es läuft, nur wenn du es schliessen willst?

Wenn ja, dann muss ich noch was einbauen, um das Programm zu beenden.
Das mache ich auch gleich einmal.

@Jojo hab den Code nochmal abgeändert....
Siehe oben, hab den einen Beitrag editiert, sont würde man vor lauter Quelltext den Wald nicht mehr sehen.

Bei mir stürzt es auch ab und zu ab.

Hab keine Ahnung wieso, deswegen werde ich es mir morgen nochmal angucken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 12.06.2010, 15:58    Titel: Antworten mit Zitat

Wenn Du eigene Fonts nutzen moechtest musst du Dich selbst als erstes fragen WAS GENAU willst du damit machen?
Wenn du eine art 'Word' schreiben moechtest benoetigst Du flexible moeglichkeiten, denn eine Textverarbeitung mit Fonts in einheitsgroesse ist sicher nicht besonders...
In Diesem Fall allerdings wuerde ich einer der vielen Libs verwenden um TTF Fonts dierkt nutzen zu koennen, denn einzelne Schriftarten in allen moeglichen groessen zu speichern scheint mir da doch sehr ineffizient...

BMPFonts, eignen sich allgemein nur bedingt... in spielen immernoch oft genutzt da schnell und einfach aber dennoch sehr unflexibel.
Meistens haben alle zeichen die selbe hoehe/breite (was es letztendlich so einfach macht happy)

Beispiel: (2min code)
hier die BMP (bzw GIF)
http://cone3d.gamedev.net/cone3d/gfxsdl/tut4-2.gif

Code:

Screen 19,32


SUB BPrint (byval xpos as Integer, byval ypos as Integer, byval text as string)
   
    '256x256x256'
    'macht 16 zeichen pro reihe x 16 reihen
    'somit ist jedes zeichen 16x16 pixel gross
    Dim BMPFont as any ptr = ImageCreate(256,256)
    BLoad "BMPFont.bmp",BMPFont   
    'Ich lade die BMP innerhalb der Sub um Shared Variablen zu vermeiden
    'und der uebersichtleren beschreibung.
   
    'da wir nun groesse der bmp und der einzelnen zeichen kennen, koennen wir damit arbeiten.
   
    Dim Textlaenge as Integer
    Dim Zeichen    as UByte
   
    Textlaenge=Len(text)
   
    Dim xstart as Integer
    Dim ystart as Integer
    Dim xstep  as Integer
   
    For t as integer=0 to Textlaenge-1
       
        Zeichen=text[t]
       
        ystart=(Fix(Zeichen/16))*16
        xstart=(Zeichen-(ystart))*16
       
       
        Put (xpos+xstep,ypos),BMPFont,(xstart,ystart)-(xstart+16,ystart+16),pset
       
        xstep+=16
    next t
   
    ImageDestroy BMPFont
End Sub

BPrint 100,300,"Test123456"

sleep


Sehr einfach und schnell, jedoch haben hier alle zeichen die selbe breite/hoehe, die farben lassen sich nicht ohne weiteres aendern ect....

Wenn Du zukuenftig vor hast oeffter verschiedene Fonts zu erstellen und zu nutzen solltest Du Dir ueberlegen, was genau du brauchst, heute oder morgen.. fonts mit unterschiedlichen breiten? Farbwahl? groesse aendern usw...
Lieber einmal etwas laengeren und schwierigeren Code schreiben als jedes mal von vorne anfangen zwinkern

Edit: vergessen grinsen
Damit man auch transparenz nutzen kann in der BMP einfach das schwarz in die Farbe &hFF00FF aendern und bei put statt pset eben trans angeben zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 12.06.2010, 18:16    Titel: Antworten mit Zitat

Hi,
mir ist im Traum jetzt folgende Idee gekommen, wenn ich eine Art Word schreiben will.

Folgendes mache ich momentan:
- Alle Asci Zeichen Fonts in eine Datei schreiben. "Diese waren vorher sepperat in einzelne Dateien gewesen".

Je nachdem was ich über die Tastatur eingebe und demzufolge der Text dann ist, suche ich aus dem Array das entsprechende Asci Font heraus und zeige es dann am Display an, denn im Array sind die xy Koordinaten des Fonts.
Wenn jetzt aber die x Koordinate über z.B 550 geht, wird eine Variabele ads addiert und ich kann den Text in einen anderen String ablegen.
Demzufolge wird der erste String nicht mehr am Screen ausgegeben, sondern der zweite String usw.
Würde ich alles nur in einen String schreiben, würde es viel zu lange dauern, bis der Screen aufgebaut ist. Daher schreibe ich alles sepperat in einen String.

Nun muss ich aber folgendes machen, da es noch viel zu lange dauert mit dem Screenaufbau.

Da muss ich mir noch was einfallen lassen, aber der Tag ist ja noch lange,
denn ich will ja auch andere Fonts und Fontsgrößen einbinden können.

Cu Andy

Edit: Als Anfang kann es ja auch erst einmal ein Texteditor werden. Naja...Eine Art Word ist schon ziemlich viel Arbeit und kostet viel Hirnschmalz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 12.06.2010, 19:27    Titel: Antworten mit Zitat

Andy19312 hat Folgendes geschrieben:
Eine Art Word ist schon ziemlich viel Arbeit und kostet viel Hirnschmalz
Hihi, nette Untertreibung. Ist die bekannt, wie viel Jahre Arbeit, verteilt auf eine große Menge an Programmierern, hinter Projekten wie Microsoft Word oder OpenOffice Writer stehen? Ich frage mich immer wieder, warum alle glauben, sie könnten alles programmieren, nur weil sie ein paar BASIC-Befehle kennen. Wenn du keine konkreten Vorstellungen hast, wozu du deinen Texteditor brauchst und warum er (für dich) besser ist als die existerenden, brauchst du auch keinen Texteditor zu schreiben - schließlich gibt es die wie Sand am Meer, und auch einen guten Texteditor zu schreiben ist kein Zuckerschlecken. Auch wenn's dir im Traum kommt, wie du ihn programmieren könntest.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.


Zuletzt bearbeitet von Jojo am 12.06.2010, 23:58, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 12.06.2010, 20:31    Titel: Antworten mit Zitat

Überhaupt ist die GFX gar nicht dafür ausgelegt damit GUI's zu gestalten. Meiner Meinung nach eine schlechte Idee. Es gibt so viele Basisfeatures an denen du mit der GFX scheitern wirst:

  • Scrollen
  • Menüs
  • das Rendern von Text, mit unterschiedlichen Farben, Hintergründen, Font's und Schriftgrößen sehr schwierig
  • Durch Klick bestimmen wo der Cursor hingesetzt werden soll, sehr viel rumgerechne
  • Performence ist auch ohne das genannte schlecht für Benutzer-Programm
  • Bilder, Tabellen, Ränder, Zeilenabstände, etc., und es hört nicht auf...


Ich will dich jetzt nicht verunsichern, aber das Projekt ist für eine Einzelperson und vor allem mit einer GFX-Oberfläche ziemlich unmachbar.

Die Idee mit den Font's in eine Datei schreiben ist auch schlecht, damit würde dein Programm nur genau die Font's in den Größen in den Farben unterstützten die du schon vorher eingibst. Für eine Schriftart gibt es ca. ein Dutzend Parameter die das aussehen beeinflussen und für jede Größe alle Kombinationen zu speichern ist eine riesige Speicherverschwendung.
Außerdem ist es ein Standardfeature jedes Textprogramms alle installierten Font's zu laden und mit beliebigen Parametern darzustellen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 12.06.2010, 23:32    Titel: Antworten mit Zitat

@Jojo:
ACK

@Stueber:
Genauso
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
isiprimax



Anmeldungsdatum: 02.01.2009
Beiträge: 77

BeitragVerfasst am: 14.06.2010, 20:31    Titel: Antworten mit Zitat

Ich würd sagen er soll es versuchen, weil solange er programmiert lernt er noch mehr von der Materie. Man kann den Leuten auch mal bissel gut zureden, das es wohl nie ein MS Word 2010 wird ist ihm (denke ich mal) auch klar. Hauptsache er Programmiert!

Viel Spass lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.06.2010, 20:34    Titel: Antworten mit Zitat

isiprimax hat Folgendes geschrieben:
Ich würd sagen er soll es versuchen, weil solange er programmiert lernt er noch mehr von der Materie. Man kann den Leuten auch mal bissel gut zureden, das es wohl nie ein MS Word 2010 wird ist ihm (denke ich mal) auch klar. Hauptsache er Programmiert!

Viel Spass lächeln

Man muss sich aber dann nicht gleich so ein hehres Ziel verfolgen, sondern eher was kleines, in diesem Fall z.B.: "Erstellung eines Textausgabesystems für ein Grafikspiel".
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 14.06.2010, 21:33    Titel: Antworten mit Zitat

ich hab ja auch ein wenig Erfahrung... MuhEdit darf man als gescheitert betrachten... Ich denke auch das ein Editor (oder gar ein WYSIWYG-Editor) für einen Anfänger nicht unbedingt das beste Ziel ist. Ich kenne mittlerweile die meisten Fehler die ich bei MuhEdit gemacht habe - damals fehlte mir für viele Dinge das Verständnis.

Aber: Alles in allem eine Gute Erfahrung und man lernt viel. Wenn er hartnäckig bleibt kanns durchaus brauchbar werden.
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.06.2010, 22:30    Titel: Antworten mit Zitat

Also Texteditor sollte mein Ziel sein.
Und das ist schon schwer genug.

Aber das Programm wächst
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz