Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

winapi fout bij inlezen file

A Marquart
4 antwoorden
  • Ik heb een programma dat een file inleest in een richedit. Nu ik het gebruik komt het voor dat de files over het netwerk van een andere computer moeten komen. Op sommige momenten gaat het mis het krijg ik een foutmelding:

    Error reading cbParam.Items.strings A WINAPI failed. Het programma hangt totaal (windows ook?)

    Ik heb al wat ‘veiligheden’ ingebouwd maar deze blijken dus niet te werken.

    Het inlezen gaat bij het opstarten van het programma al naar gelang de opgave.
    3: Open de laatst gebruikt file. Weet iemand waarom het soms fout gaat (time out p.i.d) en hoe e.e.a. op te lossen is.

    Elke hint is welkom
    Groeten Arnoud


    [code:1:daaec1a44e]procedure TMainForm.FormShow(Sender: TObject);
    begin
    inherited;

    case CStartType of
    0 : ; //leeg
    1 : MethodEdit1.Emptymethod;
    2 : MethodEdit1.Samplemethod;
    3 : OpenThisFile(CLastFile);
    end;
    end;

    function TMethodBaseform.OpenThisFile(AFilename: String): Boolean;
    begin
    Result := false;
    if AFilename = '' then Exit;

    try
    if FileExists(AFilename)
    then begin
    MethodEdit1.Lines.LoadFromFile(AFilename);
    Result := true;
    end
    else begin
    MessageDlg('File not found ('+ AFilename+').',mtError,[mbOK],0);
    end;
    except
    on EReadError do begin
    MessageDlg('Error reading file ('+ AFilename+').',mtError,[mbOK],0);
    MethodEdit1.Lines.Clear;
    end;
    on EFOpenError do begin
    MessageDlg('Error opening file ('+ AFilename+').',mtError,[mbOK],0);
    MethodEdit1.Lines.Clear;
    end;
    on EWin32Error do begin
    MessageDlg('Win32: Error opening ('+ AFilename+').',mtError,[mbOK],0);
    MethodEdit1.Lines.Clear;
    end;
    end;
    end;
    [/code:1:daaec1a44e]
  • Kan je niet een timeout instellen, dus dat als bepaalde files er niet binnen zeg 30 seconden zijn, een eeror_msg wordt weergegeven? Of dat het programma dan restart?
  • Zou je de Try..Except eens willen vervangen door het volgende stukje code en dan even laten weten welke melding je krijgt:
    [code:1:67d5607ead]
    try
    if FileExists(AFilename) then
    begin
    MethodEdit1.Lines.LoadFromFile(AFilename);
    Result := true;
    end
    else
    begin
    MessageDlg('File not found ('+ AFilename+').',mtError,[mbOK],0);
    end;
    except on E:Exception do
    begin
    MessageDlg(E.Message, mtError, [mbOK], 0);
    MethodEdit1.Lines.Clear;
    end;
    end;
    [/code:1:67d5607ead]
  • [quote:f4cd9372d3="A Marquart"]Ik heb een programma dat een file inleest in een richedit. Nu ik het gebruik komt het voor dat de files over het netwerk van een andere computer moeten komen. Op sommige momenten gaat het mis het krijg ik een foutmelding:

    Error reading cbParam.Items.strings A WINAPI failed. Het programma hangt totaal (windows ook?)[/quote:f4cd9372d3]
    Waarschijnlijk is je applicatie (en Windows) … "out of resources".

    Check o.m. je geheugen verbruik, processor capaciteit, handle count…
    Hoe groot is dat bestand?
    MethodEdit1.MaxLength=?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.