Avatar billede screwdriver Nybegynder
17. juni 2005 - 08:56 Der er 9 kommentarer og
1 løsning

Insufficient disk space i "inmem000.rem"

Hej

Jeg har et stort problem. Jeg får en BDE fejl, som hedder:"
Insufficient disk space "c:\Documents and Settings\Steffen\Lokale indstillinger\Temp\inmem000.rem"

Er der nogen der ved hvad InMem000.rem gør, og hvad man kan gøre for at undgå fejlen ?

Jeg anvender Delphi 7, Interbase 7.5, BDE 5.01. Jeg accesser databasen ved hjælp af TQuery. Størrelsen på databasen er omkring 25 MB

/Screwdriver
Avatar billede jpvj Nybegynder
17. juni 2005 - 09:14 #1
http://www.dbforums.com/showthread.php?mode=hybrid&t=1036826

Mit råd: Skift fra BDE - det er ikke videre stabilt.
Avatar billede borrisholt Novice
21. juni 2005 - 15:30 #2
screwdriver>>
Der kan være 2 ting galt ...

1)
  inmem000.rem kan være i brug af en anden process. fx en raport der er fejlet for dig, og således ikke har fået frigivet sin temporærer fil.

For udenforstående skal lige nævnes at .rem filer er temporærer filer brugt af Report Builder.

2)
  Fri diskplads kan være lige deleigt med 4 GB. Altså tryk my computer og klik på  c frevet, og se hvormeget fri plads der er.  jpvj angiver i sit link godt nok 2GB der har jeg ikke testet, men jeg ved med 4 GB er et problem. Uanset om det er 2 eller 4 GB er løsningen at bruge lidt plads på HD'en således at FriPlads mod 2 eller 4 <> 0

Jens B
Avatar billede borrisholt Novice
21. juni 2005 - 15:30 #3
Men ja BDE er ustabilt.

Jens B
Avatar billede screwdriver Nybegynder
23. juni 2005 - 08:46 #4
Jeg kan ikke bare skifte fra BDE, da det er et ret stort program, udviklet over mange år, og det vil være en voldsom ændring at droppe BDE.

Derudover har jeg ikke ellers haft problemer med BDE, så jeg vil prøve at løse problemet.

borrisholt>>
Kan man bare starte med at slette inmem000.rem hver gang man starter programmet, inden Databasen åbnes, så man er sikker på at det ikke er noget der "hænger" fra sidste gang programmet var startet ?

og mht de 2 / 4 GB, er det så regnet i bytes, MB eller GB?
Hvis man klikker på C drevet, er det i GB, med en decimal, så det går jeg ud fra at det er i GB ?

/Screwdriver
Avatar billede borrisholt Novice
23. juni 2005 - 19:24 #5
Screwdriver>> Ja du kan bare slette filen, det er bare en temporær fil, den vil altid ligge i temp. Jeg vil i den forbindelse lige supplere  med en funktion til at finde Temp path :

function GetTempPath: string;
begin
  SetLength(Result, MAX_PATH);
  Windows.GetTempPath(MAX_PATH, PChar(Result));
  SetLength(Result, Pred(Pos(#0, Result)));
end;


En anden god ide når du bruger BDE er at slette HELE indholdet af temp folderen, MED under bibloteker. Du kan nemt opleve andre BDE problemer ved at det ligger en masse og roder der nede.

Jeg har udviklet et lille program til formålet som ligger sig i start op, og sletter indholdet af temp ved opstart af computeren program + source kode kan hentes her : http://borrisholt.com/eksperten/Temp%20Sletter.zip

Mht de 2/4 GB så måles der i GB, men ellers har du ret. Du kan bruge det følgende til at måle din fri HD plads :

uses
  Math;

function JBRoundFloat(Value: Extended; const NumberOfDecimals: Byte): Extended;
var
  Factor: Extended;
begin
  Factor := IntPower(10, NumberOfDecimals);

  if Frac(Value * Factor) >= 0.5 then
    Value := Value + 1 / (IntPower(10, NumberOfDecimals + 1));

  Result := StrToFloat(Format('%.*f', [CurrencyDecimals, Value]));
end;

function DiskFreeGB (const Drive : Byte = 0) : Extended;
begin
  Result := JBRoundFloat( DiskFree(Drive) / Power(1024, 3), 2);
end;

og det følgende vil fortælle dig om du har et problem :

function HasProblem(const Drive : Byte = 0) : boolean;
var
  FreeGB : Extended;
begin
  FreeGB := DiskFreeGB(Drive);
  Result := (FreeGB = Trunc(FreeGB)) and ( Trunc(FreeGB) mod 2 = 0);
end;

Hvis du har brug for mere info stiller jeg gerne min viden til rådighed.

Jens Borisholt
Avatar billede borrisholt Novice
23. juni 2005 - 19:33 #6
I øvrigt vil jeg gerne benytte lejligheden til at reklamere for et produkt : www.eurekalog.com

Hvis du har nogle underlige fejl der opstår en gang imellem DYBT nede i din kode så kan eurekalog fange dem for dig.  Det kræver dog lidt af dig fordi du skal fjerne

try except end bloke, fordi hvis du selv håndterer exceptionen kommer den ikke i loggen. Programmet koster ikke ret meget og er efter min smag guld værd. I en stor applikation er det uundværlig.

Prøv det ....

Håber ikke det her er et brud på ekspertens regler ...

Jens Borrisholt
Avatar billede screwdriver Nybegynder
24. juni 2005 - 10:29 #7
>>Borisholt Tak for hjælpen. Lægger du lige et svar, så du kan få nogle point ?
Avatar billede borrisholt Novice
24. juni 2005 - 21:57 #8
Ja så pyt da ...

Hvor meget af det kan du bruge ?
Fik du prøvet eurekalog ?

Som du nok kan fornemme er det noget jeg selv har professionel erfaring med. Den der med at slette tempfilerne med jævne mellemrum har løst mange BDE problemer for mig.

Men igen hvis du vil have en dybere forklaring på andre BDE ting/problemer synes jeg vi skulle snakke i telefonen.

Skriv etv. til Jens@borrisholt.com

Jens B
Avatar billede screwdriver Nybegynder
27. juni 2005 - 08:36 #9
jeg har lavet det på denne måde, som det første i programmet, før DBen åbnes:

if HasBDEProblem ( 0 ) Then  // Er der et problem, sletter jeg temp folderen
  DoDelete('') ; // Slet indholdet af Tempfolderen (Taget fra dit "sletter" project)

Så satser jeg på at hvis problemet opstår igen, sletter den temp folderen, og kommer ned under de 4*X GB, og dermed undgår problemet.

Tak for tilbudet om at ringe til dig. Jeg vil gerne gemme det til næste gang jeg får problemer med BDE, hvis det er OK ?

// Screwdriver
Avatar billede borrisholt Novice
27. juni 2005 - 15:54 #10
Selvfølgelig gælder tilbudet om at ringe igen senere. Dog vil jeg synes der var bedere du slettede jævnligt i temp folderen, fordi det er derfor dit problem optår, dermed vil brugeren opleve færer nedbrud i systemet ...

En masse rod i temp folderen VIL give underlige fejl. BDE er meget dårlig til at rydde op efter sig selv.

Fik du prøvet eurekalog.
PS JEg har værken penge i klemme i eurekalog eller får kommision jeg synes bare det er en FANTASKTISK produkt derfor den reklame :D


Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester