ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Wie eine Array leeren? [gelöst]
BeitragVerfasst: 14 Sep 2007, 11:51 
Offline
Geselle

Registriert: 28 Aug 2007, 12:05
Beiträge: 117
Hi,

Ich habe ein ganz blödes Problem... Warscheinlich ist die Lösung so einfach das es nicht wert ist, hier zu schreiben, aber ich habe keine Möglichkeit gefunden. :?

Also hier ist mein code:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 for weeks in 1..@week_nr_aktuel
beanWeek = BeanWeeks.new
beanWeek.nrWeek = weeks

search_conditions_days2 = search_conditions_days + weeks.to_s
weekInCalendar = Calendar.find(:all, :conditions => [search_conditions_days2], :order => "date_of_day")

beanWeek.dateDu = weekInCalendar.first.date_of_day
last = weekInCalendar.length - 1
beanWeek.dateAu = weekInCalendar[last].date_of_day

@listWeeks.push(beanWeek)

weekInCalendar = nil
puts 'Last - ' + last.to_s
end


Das böde ist, die weekInCalendar wird jedesmal erweitert, anstatt überschrieben! Und das weekInCalendar = nil am ende der schleife bringt nichts :?

Wie kann ich die Array leeren befor es zum nächsten durchgang geht?

Ich habe sogar sowas versucht, hat auch nicht geklappt.. (Mehr als 7 einträge hat es ganz sicher nicht!)


1
2
3
4
5
6
7
weekInCalendar.delete_at(0)
weekInCalendar.delete_at(1)
weekInCalendar.delete_at(2)
weekInCalendar.delete_at(3)
weekInCalendar.delete_at(4)
weekInCalendar.delete_at(5)
weekInCalendar.delete_at(6)

oder



weekInCalendar.clear
geht auch nicht :(
mfg

_________________
Wer Rechtschreibefehler findet, darf sie für sich behalten! :D


Zuletzt geändert von razgoolyy am 14 Sep 2007, 16:20, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 12:37 
Offline
ri
Benutzeravatar

Registriert: 04 Okt 2005, 10:42
Beiträge: 740
Wohnort: Wien


1
2
3
4
bla = [1,2,3]
p bla
bla = []
p bla


ergibt:



1
2
[1, 2, 3]
[]


Zugegebenermassen habe ich mir deinen Code jetzt nicht angekuckt :D


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 12:47 
Offline
Geselle

Registriert: 28 Aug 2007, 12:05
Beiträge: 117
funktioniert leider auch nicht...

ich versteh es einfach nicht! weekInCalendar.clear müsste doch gehen!!
Wie können die Einträge noch vorhanden sein wenn die array gesäubert wurde :? :?:

:(

_________________
Wer Rechtschreibefehler findet, darf sie für sich behalten! :D


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Wie eine Array leeren?
BeitragVerfasst: 14 Sep 2007, 12:58 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
razgoolyy hat geschrieben:


1
2
3
4
5
...
beanWeek = BeanWeeks.new
...
weekInCalendar = Calendar.find(:all, :conditions => [search_conditions_days2], :order => "date_of_day")
...

Was sind denn das für Klassen? - Woher holst Du die (require ...)?

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Wie eine Array leeren?
BeitragVerfasst: 14 Sep 2007, 13:49 
Offline
ri
Benutzeravatar

Registriert: 08 Apr 2006, 17:03
Beiträge: 788
Wohnort: Berlin
woraus schließt du denn eigentlich, daß weakInCalendar nicht gelöscht wird?
Jeder .find Aufruf sollte das mit neuen Werten versorgen - das setzen auf nil am Ende der Schleife ist unnötig.

-Thomas

_________________
"Programs must be written for people to read, and only incidentally
for machines to execute."
- H. Abelson and G. Sussman
(in "The Structure and Interpretation of Computer Programs)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 14:00 
Offline
Geselle

Registriert: 28 Aug 2007, 12:05
Beiträge: 117
weil jedes mal wen es bei


puts 'Last - ' + last.to_s
ankommt ist das last um 7 höher!
Also wird irgendwie einfach angesetzt in der array anstatt das es überschrieben wird... das ist doch komisch??

_________________
Wer Rechtschreibefehler findet, darf sie für sich behalten! :D


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 14:04 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Wo habt Ihr denn die Klasse Calendar her? - ich finde die weder in RubyForge noch in der Ruby-Standard-Library?

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 14:14 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
WoNáDo hat geschrieben:
Wo habt Ihr denn die Klasse Calendar her? - ich finde die weder in RubyForge noch in der Ruby-Standard-Library?


Sieht mir sehr nach nem ActiveRecord-Model aus.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 14:19 
Offline
Interpreter

Registriert: 29 Okt 2002, 14:25
Beiträge: 2137
Welchen Wert hat denn eigentlich search_conditions_days?

Ansonsten wundert mich das nicht wirklich, da Du search_conditions_days innerhalb der Schleife nicht änderst, aber weeks immer weiter hochzählst: Zuerst holst Du Dir die Werte für eine Woche, dann für zwei, für drei ...

Das hat also nichts mit dem Leeren des Arrays zu tun, Du holst einfach immer mehr Werte aus der DB.

Gruß
janfri

_________________
Ruby-Mine

"Simplicity is the ultimate sophistication." Leonardo da Vinci


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 14:51 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Skade hat geschrieben:
Sieht mir sehr nach nem ActiveRecord-Model aus.

Oh - ich markier den Thread mal mit Rails. Es gibt auch einen Thread im Programmieren-Forum, bei dem Verwirrung über die Basis herrschte.

Ich schreib da mal einen Voschlag in beide Foren, weil das bei Fragenden und Helfenden Verwirrung stiften kann - und unnötig Zeit kostet.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 14 Sep 2007, 15:07 
Offline
Geselle

Registriert: 28 Aug 2007, 12:05
Beiträge: 117
Die Klasse Calendar ist eine tabelle in meiner Datenbank!

search_conditions_day beinhaltet dass:



1
2
3

search_conditions_days = "year = " + year.to_s
search_conditions_days << " AND week_number >="


EDIT:

ach du lieber himmel :D habe so eben den fehler gesehen...
AND week_number >=
Alles nur wegen dem blöden grösser als zeichen
:oops:

Also braucht man die array garnicht zu leeren, das schien mir nur weil aus der Datenbank mehr geholt wurde...

peinlich... :cry:

Ich danke euch jedenfalls für eure hilfe!!

für die die es verstehen wollen:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
def search_staff
@staff = Staff.find(params[:activity][:staff_id]) if params[:activity]
@week_nr_aktuel = Time.now.strftime( "%W").to_i - 1
year = Time.now.year

search_conditions_days = "year = " + year.to_s
search_conditions_days << " AND week_number = "

search_conditions_activity = "staff_id = "+ @staff.id.to_s
search_conditions_activity << " AND date_of_start >= "

search_conditions_engagement = "staff_id = "+ @staff.id.to_s
search_conditions_engagement << " AND date_of_start <= "


@listWeeks = Array.new
@total = 0
for weeks in 1..@week_nr_aktuel
beanWeek = BeanWeeks.new
beanWeek.nrWeek = weeks

# --------------------- Dates (Du - Au) ---------------------------------------------
weeksInCalendar = Calendar.find(:all, :conditions => [search_conditions_days + weeks.to_s], :order => "date_of_day")

dateDu_in_week = weeksInCalendar.first.date_of_day
beanWeek.dateDu = dateDu_in_week
last = weeksInCalendar.length - 1
dateAu_in_week = weeksInCalendar[last].date_of_day
beanWeek.dateAu = dateAu_in_week

# --------------------- Heures effectu��es ---------------------------------------------
search_conditions_activity2 = search_conditions_activity + "'" + dateDu_in_week.to_s + "'" + " AND date_of_start <=" + "'" + dateAu_in_week.to_s + "'"
activities = Activity.find(:all, :conditions => [search_conditions_activity2], :order => "date_of_start DESC" )

sommeDuration = 0
for sum in activities
sommeDuration = sommeDuration + sum.duration
end
beanWeek.heuresEffectuees = sommeDuration/60

# --------------------- Heures �� effectuer ---------------------------------------------
engagements = Engagement.find(:first, :conditions => [search_conditions_engagement + "'" + dateDu_in_week.to_s + "'" + " AND date_of_end >=" + "'" + dateDu_in_week.to_s + "'"])

free_days_in_week = Calendar.find(:all, :conditions => [search_conditions_days + weeks.to_s + " AND public_holiday = 1"])
if free_days_in_week.length > 0
sommeHeuresAEffectuer = (engagements.time_pro_day * (engagements.day_pro_week - free_days_in_week.length))/100 * engagements.rate_of_engagement
else
sommeHeuresAEffectuer = (engagements.time_pro_day * engagements.day_pro_week)/100 * engagements.rate_of_engagement
end
beanWeek.heuresAEffectuer = sommeHeuresAEffectuer

# --------------------- +/- par semaine -------------------------------------------------
heuresDifference_pro_week = (sommeDuration/60) - sommeHeuresAEffectuer
beanWeek.heuresDifference = heuresDifference_pro_week

# --------------------- TOTAL ------------------------------------------------------------
@total = @total + heuresDifference_pro_week



@listWeeks.push(beanWeek)
end

end


Dateianhänge:
Dateikommentar: Resultat...
Sans titre.JPG
Sans titre.JPG [ 144.98 KiB | 3287-mal betrachtet ]

_________________
Wer Rechtschreibefehler findet, darf sie für sich behalten! :D
Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: