|
|
||||||||
|
|||||||||
![]() |
|
|
#1 |
|
Senior Member
Geregistreerd op: Sep 2002
Locatie: Den Bosch
Berichten: 538
|
Wij hebben sinds kort Delphi 2005 aangeschaft. Ons oude Delphi 7 project komt (na erg lang pielen) door de compiler heen... maar het programma werkt niet meer als voorheen! Er lopen een aantal dingen anders, en we hebben geen idee wat er nu precies mis gaat! Het is als volgt:
Een record: Code:
Type string30 = string[30];
string45 = string[45];
string15 = string[15];
string27 = string[27];
UserInfo = Record
UserID : String15;
UPassword: String15;
UFullName: String30;
UEmail : String45;
UMaster : Boolean;
UEnabled : Boolean;
DataDir : string27;
Reserved : integer;
End;
Een variabele: Var F : File Of UserInfo; Wat code: Code:
AssignFile(F,SimplexPasswordFile);
Reset(F);
Fsize := FileSize(F);
result := 0;
try
while result < Fsize do
begin
Seek(F,result);
BlockRead(F,UserRec,1);
if R(result, UserRec, X) then
break
else
inc(result);
end;
finally
CloseFile(F);
if result >= Fsize then result := -1;
end;
In Delphi 7 werkt het uitlezen van dit bestand dus GOED! Altijd gedaan... maar nu, in Delphi 2005, wordt alleen het EERSTE item goed uitgelezen, en alle VOLGENDE items niet meer! Iemand ideeen??
|
|
|
|
|
|
#2 |
|
mov eax,marcov; push eax
Geregistreerd op: Apr 2004
Locatie: Ehv, Nl
Berichten: 6.311
|
Klinkt als alignment probleem. Maak het record eens "packed"
type x= packed record |
|
|
|
|
|
#3 |
|
Senior Member
Geregistreerd op: Sep 2002
Locatie: Den Bosch
Berichten: 538
|
Geniaal!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!
Bedankt, het werkt nu wel! |
|
|
|
|
|
#4 |
|
Senior Member
Geregistreerd op: Sep 2002
Locatie: Den Bosch
Berichten: 538
|
Nog even een vraagje:
Heeft dit "packed" alleen te maken met bestanden, of heeft het ook effect op records in het geheugen? Laatst aangepast door Adnan : 27-Jan-05 om 10:24 |
|
|
|
|
|
#5 |
|
SillyMember
Geregistreerd op: May 2003
Locatie: Gent
Berichten: 7.315
|
Beiden.
Noteer dat gebruik van packed voor structured types een negatieve invloed heeft op performance.
__________________
"All methodologies are based on fear" -- Kent Beck |
|
|
|
|
|
#6 |
|
Senior Member
Geregistreerd op: Sep 2002
Locatie: Den Bosch
Berichten: 538
|
Ja, dat had ik gelezen!? Is daar niets aan te doen... is dit de enige manier om bestanden weg te schrijven dan? Want dat zou betekenen dat Delphi 2005 altijd dus een degradatie is, qua bestandsverwerkingen?!
En, als ik van ALLE records een 'packed' record maak, is dat dan ALTIJD goed, of werkt dat is sommige gevallen dat weer niet ofzo? |
|
|
|
|
|
#7 |
|
SillyMember
Geregistreerd op: May 2003
Locatie: Gent
Berichten: 7.315
|
Als ik je record definieer in D7 en de size opvraag is dat 144 bytes, in D2005 is dat hetzelfde. Packed geven beiden 143 bytes. Het probleem is dus blijkbaar niet D7 versus D2005.
Ook: waarom gebruik je BlockRead (untyped files) i.p.v. Read?
__________________
"All methodologies are based on fear" -- Kent Beck |
|
|
|
|
|
#8 |
|
Senior Member
Geregistreerd op: Sep 2002
Locatie: Den Bosch
Berichten: 538
|
Dat is wel heel vreemd dan inderdaad! Want deze ENE wijziging zorgt er wel voor dat het programma nu doorloopt in 2005!?
En we kunnen inderdaad net zo goed Read gebruiken, maar dit is ooit gewoon zo geprogrammeerd (enkele jaren geleden) en nooit meer aangepast! Zit daar ook een verschil tussen (Read en BlockRead) dan?? |
|
|
|
|
|
#9 |
|
mov eax,marcov; push eax
Geregistreerd op: Apr 2004
Locatie: Ehv, Nl
Berichten: 6.311
|
Dirk: de performance penalty is zeer CPU afhankelijk.
Soms is b.v. "packed" sneller, bij voorbeeld omdat een datastructuur plotseling wel in de cache past. Adnan: Record alignment is het toevoegen van dummy bytes zodat velden op een veelvoud van een aantal bytes (2,4,8,16,32) beginnen. Sommige processoren kunnen velden die op deze manier gepositioneerd zijn dan wat sneller vinden. "packed" voorkomt dit, en ragt alle velden achter elkaar. Blockwrite kopieer letterlijk x bytes van geheugen naar file. De file is dus een afspiegeling van het geheugen. Dit soort versnellingen zijn sinds caches echter wat achterhaald. Een cache miss is nl vele malen duurder, en die komen in de meeste realworld apps veel vaker voor. Allleen zeer CPU intensieve code die zeer intensief met grote statische arrays werken (compressie, grafische programma's soms) hebben hier baat bij. |
|
|
|
|
|
#10 |
|
SillyMember
Geregistreerd op: May 2003
Locatie: Gent
Berichten: 7.315
|
Heb je misschien de project options gewijzigd?
Zie {$A}
__________________
"All methodologies are based on fear" -- Kent Beck |
|
|
|
|
|
#11 |
|
mov eax,marcov; push eax
Geregistreerd op: Apr 2004
Locatie: Ehv, Nl
Berichten: 6.311
|
Dirk: blockread is veel sneller, en kan meerdere soorten objecten door elkaar aan.
|
|
|
|
|
|
#12 |
|
Senior Member
Geregistreerd op: Sep 2002
Locatie: Den Bosch
Berichten: 538
|
Jongens... jullie zijn geweldig! We hebben enkele opties aan- en uitgeschakeld... die verschillen tussen de projecten in D7 en D8 -- en voila, alles werkt perfect, zelfs het packed record zijn niet nodig!!!!!
(Niet zo slim van ons om die instellingen niet te controleren) Bedankt... en sorry voor het verdoen van jullie kostbare tijd! |
|
|
|
|
|
#13 |
|
SillyMember
Geregistreerd op: May 2003
Locatie: Gent
Berichten: 7.315
|
D8?
![]() Ik dacht dat D2005 betrof?
__________________
"All methodologies are based on fear" -- Kent Beck |
|
|
|
|
|
#14 | |
|
SillyMember
Geregistreerd op: May 2003
Locatie: Gent
Berichten: 7.315
|
Citaat:
__________________
"All methodologies are based on fear" -- Kent Beck |
|
|
|
|
|
|
#15 |
|
Senior Member
Geregistreerd op: Sep 2002
Locatie: Den Bosch
Berichten: 538
|
Sorry, ik bedoelde inderdaad D2005!!
|
|
|
|
![]() |
| Bookmarks |
| Momenteel bekijken: 1 (0 leden en 1 gasten en/of zoekmachine bots) actieve gebruikers dit onderwerp | |
| Onderwerpopties | Zoek in onderwerp |
| Weergavemodus | Stem op dit onderwerp: |
|
|
Soortgelijke onderwerpen
|
||||
| Onderwerp | Auteur | Forum | Reacties | Laatste Bericht |
| Quickreport weg uit delphi 2005? Wat dan gebruiken? | r.nijenhuis | Algemeen | 16 | 07-Mar-05 15:15 |
| VCL Crystal Reports 10 voor Delphi 2005 | Eric vd Heuvel | Algemeen | 2 | 27-Dec-04 12:41 |
| Delphi for the .Net framework of Delphi 2005 | Alias1524 | Koffiehoek | 13 | 25-Nov-04 21:45 |
| Mijn gedachte: "Borland een tegenstrijdig bedrijf" verhelpen | Cornelis | Koffiehoek | 67 | 15-Jun-04 10:32 |
| Delphi --> COM --> VB problemen | sdk | Algemeen | 1 | 29-Jan-03 16:39 |