Results 1 to 8 of 8

Thread: Gegevens blijven in geheugen achter?

  1. #1
    Senior Member
    Join Date
    Jan 2005
    Location
    Waspik
    Posts
    579

    Gegevens blijven in geheugen achter?

    Deze functie laat rommel achter in het geheugen. Ten minste dat is mijn conclusie.
    Met deze functie open ik een access besstand.

    Code:
    procedure TFrm_Specificatie_data.Open_Gvsx;
    var
      OpenDialog   : TOpenDialog;
      FileNamepath : String;
    begin
      Screen.Cursor := crHourglass;
      Main_frm_basis.StatusbarText_0 := 'Openen GVSX bestand...';
      Main_frm_basis.Repaint;
      OpenDialog := TOpenDialog.Create(Main_Frm_Basis);
      With OpenDialog do
        begin
          try
            Title := 'Open een GVSX bestand';
            if Main_Frm_Basis.GVSX_RecentUsedFile = '' then
              InitialDir := Main_Frm_Basis.ApplicatiePad
            else
              InitialDir := Main_Frm_Basis.GVSX_RecentUsedFile;
            Options := [ofFileMustExist];
            Filter := 'GVSX bestand (*.gvsx)|*.gvsx';
            if not Execute then  //cancel
              begin
                 Screen.Cursor := crDefault;
              end
            else
              begin
                FileNamepath := ExtractFileDir(FileName);
                FileName := ExtractFileName(FileName);
                with DataModule_ctrl_gvsx.ODBCConnection_gvsx do
                  begin
                    Connected := False;
                    Params.Clear;
                    Driver := Main_frm_Basis.ODBC_Params[0];
                    Params.Add(Main_frm_Basis.ODBC_Params[1]);
                    Params.Add(Main_frm_Basis.ODBC_Params[2]);
                    Params.Add('DBQ=' + FileNamepath + '\' + FileName + ';');
                    Params.Add('DefaultDir=' + FileNamepath + ';');
                    Params.Add(Main_frm_Basis.ODBC_Params[5]);
                    Params.Add(Main_frm_Basis.ODBC_Params[6]);
                    Params.Add(Main_frm_Basis.ODBC_Params[7]);
                    Params.Add(Main_frm_Basis.ODBC_Params[8]);
                    Params.Add(Main_frm_Basis.ODBC_Params[9]);
                    try
                      Connected:=True;
                      Main_Frm_Basis.StatusbarText_1 := Main_Frm_Basis.Titel + ' - [ ' + FileName + ' ]';
                      Main_Frm_Basis.Logging.WriteToLog('Informatie | Openen GVSX bestand: ' + FileNamepath + '\' +  FileName);
    
                      Main_Frm_Basis.GVSX_RecentUsedFile := FileNamepath;
                      Main_frm_basis.StatusbarText_0 := 'Het bestand "' + FileName + '" is geopend.';
                      Main_frm_basis.Repaint;
                    except
    
                      Screen.Cursor := crDefault;
                      //logging...
    
                    end;
                  end;
                Screen.Cursor := crDefault;
              end;
          finally
            Free;
          end; // try
        end;   //opendialog
    end;
    Vervolgens komt de volgende functie. Hiermee zet ik de gegevens van 1 veld van de Access database in een memo.
    Het vreemde is dat behalve de data van het Access veld aan het eind een extra regel in de memo komt te staan. Deze regel bevat het pad waarin het Access bestand staat.

    Code:
    procedure TFrm_Specificatie_data.Zet_template_file_in_memo;
    begin
      Screen.Cursor := crHourglass;
      Memo_Template_File_tmp.Clear;
      if Check_tablenames('sys_rights_prjcts_templates') then
        begin
          with DataModule_ctrl_gvsx.SQLQuery_gvsx do
            begin
              Close;
              SQL.Clear;
              SQL.Add('select template_file');
              SQL.Add('from sys_rights_prjcts_templates');
              SQL.Add('where');
              SQL.Add('user_id = ''' + ComboBox_active_user.Text + '''');
              SQL.Add('and');
              SQL.Add('template_id = ''' + ComboBox_Active_template.Text + '''');
              Active := True;
              First;
              while not eof do
                begin
                  Memo_Template_File_tmp.Lines.Add(FieldByName('TEMPLATE_FILE').AsString);
                  next;
                end;
            end;
        end;
      Screen.Cursor := crDefault;
    end;
    Wat gaat mis bij het openen van het Access bestand?

    En dan nu op naar oud en nieuw.

  2. #2
    Senior Member
    Join Date
    Jan 2005
    Location
    Waspik
    Posts
    579
    Op een andere manier opgelost.

    Het blijft wel vreemd. Ik heb in een test progje een summiere open procedure voor een acces bestand gemaakt en haal vervolgens de inhoud van 1 veld uit een tabel een memo en krijg ook dan weer een het een onverklaarbare regel aan het eind van de memo.

  3. #3
    is het type wel een string? Heb je value al eens geprobeert?

  4. #4
    Senior Member
    Join Date
    Jan 2005
    Location
    Waspik
    Posts
    579
    Value lost het inderdaad op. Het veld dat ik uitlees is een memoveld. Ik was er automatisch van uitgegaan dat het een tekstveld was.

  5. #5
    Senior Member
    Join Date
    Jan 2005
    Location
    Waspik
    Posts
    579
    Te vroeg geroepen. Value lost het ook niet op.

  6. #6
    Misschien lines.assign?

  7. #7
    Senior Member
    Join Date
    Jan 2005
    Location
    Waspik
    Posts
    579
    Ik heb een hele kale opzet gemaakt die een Access Bestand opent en alleen het juiste veld uit access ophaalt en in de memo zet. (Verder helemaal niets)
    Dit heb ik in Delphi en in lazarus gedaan.
    In Delphi werkt het goed. Precies dezelfde code geeft in lazarus aan het eind van de memo wat vreemde tekens die in Delphi niet zichtbaar zijn.

    Ik heb Utf8ToUtf16 naar widestring geprobeerd, maar dat geeft hetzelfde resultaat.

    Het betreft altijd de laatste regel in de memo, dus ik zou die kunnen verwijderen, maar dat is geen echte oplossing.
    Last edited by Hansvb; 04-Jan-14 at 21:13.

  8. #8
    Wellicht is het voor jouw situatie zinvol om de trunk versie van fpc (2.7.1) te gebruiken.
    VZIW zijn er nogal wat bugs in de database code base opgelost.

    Bart

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •