|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Muecke Gast
|
Verfasst am: 24.01.2014, 15:29 Titel: |
|
|
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 |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 24.01.2014, 17:08 Titel: |
|
|
so ich habe die Excel verbaut
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
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
Ihr seit echt Spitze, Ohne euch hätte ich da noch ne Weile länger dran Gesäßen vermutete ich.
DANKE DANKE DANKE |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 26.01.2014, 00:56 Titel: |
|
|
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.
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 |
|
|
Muecke Gast
|
Verfasst am: 26.01.2014, 10:55 Titel: |
|
|
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
habe deinen Code mir mal angeschaut und auch gleich Implementiert
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
dein Code tut aber als hat es was zu bedeutet
Kannst du mir da was zu sagen? |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 26.01.2014, 13:09 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 26.01.2014, 14:27 Titel: |
|
|
Was ich vielleicht noch dazusagen sollte, ist, daß diese Sub nur mit einem einstelligen Separator funktioniert. ist dasselbe wie- 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.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|
|
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.
|
|