Avatar billede lanstorp Nybegynder
03. september 2002 - 13:56 Der er 5 kommentarer og
1 løsning

Win XP problem med D6

Har lavet et program på Win 2000, der åbner en tekstfil og kværner den uden problemer. På en maskine med Win XP kommer der en programfejl med reference til et obskurt sted i exe filen, når tekstfilen åbnes.
Har et eller andet sted hørt at XP mangler en dll ??
Nogen løsninger ?
Avatar billede lanstorp Nybegynder
03. september 2002 - 14:01 #1
For at være præcis:
Access violation at address 004CE009 in module 'minfil.exe'. read of address 0000000004
Avatar billede cms Nybegynder
03. september 2002 - 18:13 #2
Se evt. her:
http://community.borland.com/article/0,1410,28423,00.html
Avatar billede doc404 Novice
04. september 2002 - 03:12 #3
Hvis du ellers har en Delphi på din XP box, burde det vel være en *relativ* simpelt opgave og steppe sig frem til, hvor det går galt?

Ellers prøv, at poste noget kode her...
Avatar billede lanstorp Nybegynder
04. september 2002 - 08:15 #4
Koden åbner en tekst fil, hvor hver linie består af tre tal adskilt af et mellemrum. Hvert tal kolonne smides i hvert sit array.

Indholdet i tekstfil kunne være:
532275.0 6178625.0 90.8
532300.0 6178625.0 91.0
532325.0 6178625.0 91.1
532350.0 6178625.0 91.3

Koden:
procedure TForm1.Button1Click(Sender: TObject);
  function GetToken(var aStr : String; const Delimiter : Char = #32) : Double;
  var
    i : integer;
  begin
    i := pos(Delimiter, aStr);
    if i = 0 then
      Result := StrToFloat(aStr)
    else
      Result := StrToFloat(copy(aStr, 1, i-1));

    Delete(aStr, 1, i);
  end;

var
  i, iNumPoints: integer;
  StringList: TStringList;
  dX,dY,dZ: array of double;
  str: string;
begin
  StringList := TStringList.Create;
  StringList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'XYZ.TXT');
 
  iNumPoints := StringList.Count;

  SetLength(dX, iNumPoints);
  SetLength(dY, iNumPoints);
  SetLength(dZ, iNumPoints);

  for i := 0 to iNumPoints -1 do
  begin
    str := StringList[i];
    try
      dX[i] := GetToken(str);
      dY[i] := GetToken(str);
      dZ[i] := GetToken(str);
    except
      On E: EConvertError do
        ShowMessage('Invalid point file..')
    end;
  end;   

  // dummy code
  for i := 0 to iNumPoints -1 do
  begin
    Button1.Caption := FloatToStr(dX[i]);
  end;

end;

Har lagt en errorhandler ind i forhold til første kommentar. Den bliver kun aktiveret i XP, i W2K ingen poroblemer ? Koden stammer fra et tidligere spørgsmål: http://www.eksperten.dk/spm/244229
Avatar billede lanstorp Nybegynder
04. september 2002 - 08:48 #5
Fjernes exceptionen funker det stadigt i W2K men crasher i XP.
Avatar billede lanstorp Nybegynder
04. september 2002 - 10:17 #6
Løsning:
Brug Val i stedet for StrToFloat. StrToFloat snubler over omvendt opsætning med . og , i forhold til engelsk notation. Eller ændre opsætning til engelsk med . som , og omvendt.
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