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:

Komplexeres Rechnen in FB
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
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 15:29    Titel: Antworten mit Zitat

die exel bin ich noch dabei. sieht gut aus bis jetzt, schätze das ich bis heute Abend das drin habe habe die exel Datei habe ich noch modifiziere lächeln
Nach oben
Muecke
Gast





BeitragVerfasst am: 24.01.2014, 17:08    Titel: Antworten mit Zitat

so ich habe die Excel verbaut lächeln

jetzt wird eine Art Steigung ausgerechnet zwischen jeden Punkt die merke ich mir dann (Arrey Steigung)

dann schaue ich mir vom Aktuellen Punkt her immer die Letzten 9 und die Nächten 9 Punkte an rechne die zusammen und Teile sie dann durch 19 das wird dann mit einer Steigung verglichen und wenn die Größer als ?? ist dann behaupte ich das ein Knick vorhanden ist.

da ich so sehr viel Knicke hintereinander bekomme schaue ich dann wann es anfängt zu Knicken und wann es aufhört zu Knicken und die Werte gebe ich dann als Knick aus lächeln

so kommt das Bild zustande.

https://dl.dropboxusercontent.com/u/130479015/Forum/FreeBasic/Knicke.jpg

das Bild ist einfach zu Groß um es hier richtig darzustellen daher habe ich es in einen Extra Link gepackt lächeln


Ihr seit echt Spitze, Ohne euch hätte ich da noch ne Weile länger dran Gesäßen traurig vermutete ich.


DANKE DANKE DANKE
Nach oben
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 26.01.2014, 00:56    Titel: Antworten mit Zitat

Ich habe mir erlaubt, die Sub "Zeile_Array" aus deinem Programmpaket zu überarbeiten und auf Geschwindigkeit zu optimieren. Dieser Code
Code:
Sub Zeile_Array(Datei As T_Datei, ZeilenNr As Integer, Separator As String, Array() As Single)     '' Nimmt eine Zeile aus der Datei uns Speichert es in ein Array ab
   
  Dim As String Memory, g                                '' Kurzzeitgedächtnis
  Dim DNr As Integer = FreeFile                          '' Offne Datei Nr.
   Dim As Integer SeperatorAnzahl, anfptr = 0, endptr = 0
         
  Open Datei.File For Input Encoding "ASCII" As #DNr     
     For i As Integer = 1 To ZeilenNr
        Line Input #DNr, Memory               
     Next
  Close #DNr
 
  For i As Integer = 0 To Len(Memory) - 1 '' Ermitteln wie viele Zellen in der Zeile sind
     If Memory[i] = Separator[0] Then
        SeperatorAnzahl += 1
     EndIf
  Next
           
   ReDim As Single Array(1 To SeperatorAnzahl)             '' Array neu Diminsoniren
   
   Memory += Separator
   For i As Integer = 1 To    SeperatorAnzahl
      anfptr = endptr + 1
      Do
         endptr += 1
      Loop Until Memory[endptr] = Separator[0]
      
      If endptr > anfptr Then
         g = String(endptr - anfptr,Chr(0))
         For x As Integer = 0 To endptr - anfptr - 1
            g[x] = Memory[anfptr + x]
         Next
         Array(i) = Val(g)
      EndIf
   Next
     
End Sub
arbeitet etwa doppelt so schnell wie deine ursprüngliche Version. lächeln

Noch (viel) schneller könnte das ganze werden, wenn du die Datei nicht jedesmal öffnen und erneut auslesen würdest, denn solche Dateioperationen kosten sehr viel Zeit. Aber um das zu ändern, müsste das Programm auch an anderen Stellen angepasst werden.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Muecke
Gast





BeitragVerfasst am: 26.01.2014, 10:55    Titel: Antworten mit Zitat

Hallo grindstone,

ich bin wie immer platt, ... auf meinem Rechner habe ich hier nichts bemerkt das das Programm etwas lahm ist, hingegen bei einem Kumpel hat der Bildaufbau etwas länger gedauert lächeln

habe deinen Code mir mal angeschaut und auch gleich Implementiert lächeln

bis zum Block
Code:
'' Ermitteln wie viele Zellen in der Zeile sind


ist noch alles identisch,
dann machst du jedoch etwas was ich nicht verstehe.

Code:
  For i As Integer = 0 To Len(Memory) - 1 '' Ermitteln wie viele Zellen in der Zeile sind
     If Memory[i] = Separator[0] Then
        SeperatorAnzahl += 1
     EndIf
  Next


OK du hast den Zähler i von 0 bis Länge von Memory
in Memory ist die vollständige Zeile Alls Spring gespeichert aus der Datei

Jetzt kommt etwas was ich nicht verstehe.

Code:
     If Memory[i] = Separator[0] Then

Punkt 1. was Bedeuten die [] "Eckigen Klammern"
und was ist in den Werten denn drin? für mich ergibt das an der Stelle keinen Sinn traurig

dein Code tut aber als hat es was zu bedeutet zwinkern
Kannst du mir da was zu sagen?
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 26.01.2014, 13:09    Titel: Antworten mit Zitat

mit [ ] kannst du auf eine speicherstelle direkt zugreifen.

Der zugriff ist vergleichbar mit:
Code:
Dim T as String = "Test"
Print Asc(Mid(T, 2))

'bzw.

Print T[1]


PS: Speicherstellen beginnen immer mit 0.

Man vereinfacht das ganze ziemlich durch dieses vorgehen, und spart einiges an quellcode, der von FB in das programm integriert werden würde.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 26.01.2014, 14:27    Titel: Antworten mit Zitat

Was ich vielleicht noch dazusagen sollte, ist, daß diese Sub nur mit einem einstelligen Separator funktioniert.
Code:
Separator[0]
ist dasselbe wie
Code:
Asc(Separator)
- nur schneller. Und die Tatsache, daß mehrere Separatoren direkt aufeinanderfolgen können, war noch einmal eine zusätzliche Herausforderung.

Eine ausführliche (und wie ich finde sehr fruchtbare) Diskussion über Pointerprogrammierung findest du hier. Die Umstellung von Stringoperationen auf Pointerindizierung hat bei meinen Audio-Konvertierungsprogrammen eine knappe Verzehnfachung der Geschwindigkeit gebracht. happy

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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