Array mit Struktur als Typ

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

plumper
Beiträge: 2
Registriert: So, 28.05.2006 18:10

Array mit Struktur als Typ

Beitrag von plumper »

Hi all!

ich bin relativ unbeleckt in der Basic/StarBasic Programmierung und habe ein kleines Problem mit einem wehrhaften Array, das sich sehr erfolgreich gegen die Zuweisung von Objekten vom Typen meiner Wahl sträubt.
Folgeder Code ist existent:

Code: Alles auswählen

' Eigener Typ....
type TTimeRecord
	ProjectNo	as string
	FakturaEH	as string
	Faktura		as string
	Consultant	as string
	RKYes		as string
	AddCosts	as string
	dateFrom 	as date
	dateTo 		as date
	factmonth	as integer
	Invoice		as string
	InvoicePlaced	as date
	InvoicePayed	as date
end type
...
function getIvoiceDataForMonth(selMonth as integer, optional myDoc as object) as TTimeRecord
  dim TimeRecs() as TTimeRecord
  dim TimeRec as TTimeRecord
  lastRow = getLastTimerecRow(myDoc)
  actualSheet = myDoc.Sheets(TimeTable)  
  for i = 1 to lastRow
	Invoicecell = actualSheet.getCellByPosition(9, i)
	monthcell = actualSheet.getCellByPosition(8, i)
	if Invoicecell.string = "" and (monthcell.value = selMonth or monthcell.value < selMonth) then
		redim preserve TimeRecs(iCount)
	    iCount = iCount + 1
	    TimeRec = fillRecord(actualSheet,i)
		TimeRecs(iCount-1) = TimeRec
	end if
  next i
  getActiveRecordsForPeriod = TimeRecs()
end function
Der Code löst keinen Fehler aus, nur ist das Array TimeRecs() am Ende leer, obwohl in der Zeile

Code: Alles auswählen

TimeRecs(iCount-1) = TimeRec
ein Eintrag hinzugefügt wurde. Also in TimeRec war definitiv ein Objekt der gewünschten Struktur vorhanden

Ich sehe den Fehler einfach nicht. Ich danke Euch für jegliche Bemühung m Eurerseits mein Brett vom Kopf zu entfernen!

Jens
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Jens,

wie stellst du denn fest, dass der Array leer ist?

Die Funktion jedenfalls liefert diesen nicht zurück:

Code: Alles auswählen

function getIvoiceDataForMonth(...
...
   getActiveRecordsForPeriod = TimeRecs()
end function 
die Funktion liefert aktuell gar nichts zurück - der Array "verhungert" innerhalb der Funktion - oder was ist das "getActiveRecordsForPeriod"?

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
plumper
Beiträge: 2
Registriert: So, 28.05.2006 18:10

Beitrag von plumper »

Hi Thomas,
oh mann bin ich bescheuert... Die Funktion hatte mal einen anderen Namen... Sorry! Wie gesagt - Blind


Ich stelle es fest indem ich im Debugger in das Array gucke.. Und das ist leer... bzw. NULL

Ich habe mir das jetzt noch einmal angesehen, und ist war, das nichts zurückgeliefert wurde - klar. Aber daß das Array leer ist habe ich im Debugging festgestellt, und zwar in TimeRecs() direkt. Das Script wird fehlerfrei abgearbeitet, aber die Einträge werden scheinbar nicht eingefügt...

Gruß,

Jens
Antworten