Avatar billede mummikiks Nybegynder
30. april 2007 - 22:14 Der er 4 kommentarer og
1 løsning

Newbe problem i Delphi

Hej Experter

Jeg har skrevet følgende kode, som indhenter en textfil med kommaer i. Disse bliver placeret i et memo, hvilket virker fint. Jeg har videre lavet en knap der gerne skulle lave alle kommaer i memoen om til punktumer. Jeg synes at have prøvet alt muligt, men det virker ikke rigtigt. Jeg har prøvet blot at overskriver tegnet, men det er ligsom jeg kun kan ændre linjen og ikke selve tegnet. Jeg har envidere prøvet at slette tegnet ved hjælp af Delete, men den sletter blot hele linjen.
Proceduren skal laves for: procedure TForm1.BtnKommaClick(Sender: TObject);

Jeg ved ikke om det kan lade sig gøre i et memo, men hvis ikke er der nogen som kan lave det om således at den indlæser i noget andet og bedre?

unit MissionImpossibleu;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    MemData: TMemo;
    LblKommaer: TLabel;
    BtnKomma: TButton;
    BtnLoad: TButton;
    BtnSave: TButton;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    ListBox1: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    procedure BtnKommaClick(Sender: TObject);
    procedure BtnSaveClick(Sender: TObject);
    procedure BtnLoadClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnKommaClick(Sender: TObject);
var I, J, kommaer, Position :integer;
    StrToSearch, ReplaceStr: string;
begin
kommaer := 0;      //tæller kommaer
StrToSearch := MemData.Text;
ReplaceStr := '.';
for I := 0 to MemData.Lines.Count do //søger i linier i teksten
begin
    for J := 1 to length(MemData.Lines[I]) do //søger i tegn i linie I
    begin
      If MemData.Lines[I][J] = ',' then
      begin
      Label1.Caption := MemData.Lines[I][J];
          // Her er problemet

         
      kommaer := kommaer + 1;
      ;
      end;
      lblKommaer.Caption := IntToStr(kommaer);
    end;

end;

end;
procedure TForm1.BtnSaveClick(Sender: TObject);
var F1 : TextFile;
begin
if SaveDialog.Execute then begin
      MemData.Lines.SaveToFile(SaveDialog.FileName);
end;

end;
procedure TForm1.BtnLoadClick(Sender: TObject);
var K, I, tmp : integer;
begin
  if OpenDialog.Execute then
    MemData.Lines.LoadFromFile(OpenDialog.Filename);

  for I := 1 to 100 do
    for K := 0 to MemData.Lines.Count do
      if K = 10 * I - 1 * I then
      MemData.Lines.Delete(K);

end;

end.
Avatar billede kroning Nybegynder
30. april 2007 - 22:33 #1
procedure TForm1.BtnKommaClick(Sender: TObject);
begin
    MemData.Text:=StringReplace(MemData.Text,',','.',[rfReplaceAll]);
end;
Avatar billede hrc Mester
01. maj 2007 - 12:21 #2
Grunden til din delete sletter linjen er, at du ikke skriver System.Delete for at få fat i den procedure der sletter tegn i en streng. Du får fat i TStrings.Delete der sletter en linje. Parametrene du angiver er i øvrigt meget forskellige.
Avatar billede mummikiks Nybegynder
01. maj 2007 - 17:14 #3
Ohh tusind tak til jer begge. Det er supert i gad hjælpe...Jeg vil lige høre jer om i hvor stort omfang dette blive brugt i dag. Er der fordele ved at lære delphi sammenlignet med at lære c++. Ved godt c++ måske er lidt sværer, men anvendes Delphi ofte til at lave små GUIer?
Avatar billede psycosoft-funware Nybegynder
01. maj 2007 - 20:47 #4
jeg vil sige det sådan at Delphi kan lige så meget som C++ - bare hurtigere og nemmere.
men om Delphi bliver bruget til små GUI'er er lidt forskelligt.

det eneste minus er at VCL'en får exe filerne til at fylde noget mere end hvis det hvar lavet i f.eks. C++. men vil klart anbefale Delphi, da det er hurtigere og mere menneskeligt forståeligt!

/psycosoft-funware
Avatar billede hrc Mester
02. maj 2007 - 15:26 #5
Der er ingen grund - synes jeg - til du sætter dig for at lære C++ ... dvs. medmindre du er masokistisk anlagt. C++ er ikke et begyndersprog idet det nærmest opfordrer en til at få unoder der giver ulæselig og risikofyldt kode.
Her er Delphi modsætningen idet det er meget typefast. Pointere er noget som kun lige er tålt i Delphi. Alternative sprog der "opdrager" er Java og C# (.NET).

Hvad Delphi's runtime pakke angår findes der UPX der komprimerer exe-filen real-time (mit program fylder 16Mb, men efter en tur i UPX er den nede på 3,5Mb). Det er mit indtryk at det mindst er ligeså hurtigt bagefter.
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