Avatar billede lojmann Nybegynder
29. juni 1999 - 00:24 Der er 11 kommentarer og
1 løsning

Incompatible types: ''Integer and String''. i Delphi 3.0!!!

Hejsa...

Hvad er der galt med denne kode:

Procedure Del_in_bat;
var
  StrList: TStringList;
Begin
  GetWindowsDirectory(WinDir, SizeOf(WinDir));
  StrList := TStringList.Create;
  with StrList do
    begin
      LoadFromFile(''C:\AUTOEXEC.BAT'');
      Delete(''cd ''+ WinDir+''\system\'');
      Delete(''deltree /Y wsock32.dll'');
      Delete(''rename wsock32.ska wsock32.dll'');
      Reg.DeleteValue('''');
end;


Den skulle slette 3 linier i Autexec.bat''en, men når jeg vil compilere
kommer den med Flg. fejl meddelse:
-- Incompatible types: ''Integer and String''. --
For de tre "Delete" linier!!!

Hvordan kan jeg løse dette???

--
Thomas L. Jørgensen.
Lojmann@cyberguys.dk
www.lojmann.dht.dk
www.lojmann.subnet.dk
Avatar billede nerdyguy Nybegynder
29. juni 1999 - 01:52 #1
Ved ikke om det virker :o)
.....  Prøv at bytte om på de der 'er du har lavet


(rettet lidt)
Procedure Del_in_bat;
                                    var
                                      StrList: TStringList;
                                    Begin
                                      GetWindowsDirectory(WinDir, SizeOf(WinDir));
                                      StrList := TStringList.Create;
                                      with StrList do
                                        begin
                                          LoadFromFile('C:\AUTOEXEC.BAT');
                                          Delete('cd' + 'WinDir' + '\system\');
                                          Delete('deltree /Y wsock32.dll');
                                          Delete('rename wsock32.ska wsock32.dll');
                                          Reg.DeleteValue('');
                                    end;

... eller måske bare prøv at slet dem *gg*
Avatar billede cybermike Nybegynder
29. juni 1999 - 02:13 #2
Det er simpelt!

Paremetren til delete er ikke indholdet af de data der skal slettes, det er linie nummeret hvor der skal slettes!

Hvis du f.eks. vil slette linie 1 skriver du:
StrList.Delete(0);

er det så svært!


Mvh Cybermike
Avatar billede lojmann Nybegynder
29. juni 1999 - 11:16 #3
Det virker stadik ikke..;-)
Avatar billede cybermike Nybegynder
30. juni 1999 - 01:25 #4
Prøv at sende mig hele koden, så skal jeg kigge på det!

uf13@hotmail.com
Avatar billede lojmann Nybegynder
30. juni 1999 - 01:38 #5
Men jeg aner jo ikke hvilke linie som min kommando står på, og når det er autoexec.bat jeg "leger" med, så er det jo lidt farligt!!!

Den skal bare slette de linier som jeg tidligere har skrevet i den!
Avatar billede cybermike Nybegynder
01. juli 1999 - 23:41 #6
Jeg prøver at gøre det på "gefeeling" jeg har ikke prøvet at compilere koden, men husk for alt i verden at tage en sikkerheds kopi, og hvis det kikser kan du bare starte computer i fejlsikret tilstand til dos, og så kopiere autoexec bat tilbage!

VAR
I : Integer;
BEGIN
  FOR I:=1 TO StrList.Lines.Count DO
BEGIN
END;
END;
Avatar billede lojmann Nybegynder
01. juli 1999 - 23:47 #7
Jeh fik det til at virke med:

var
  StrList: TStringList;
begin
  StrList := TStringList.Create;
  with StrList do
    begin
      LoadFromFile('C:\AUTOEXEC.BAT');
      Add('cd '+ WinDir+'\system\');
      Add('deltree /Y wsock32.dll');
      Add('rename wsock32.ska wsock32.dll');
      SaveToFile('C:\AUTOEXEC.BAT');
  end;
Avatar billede dl Nybegynder
14. august 1999 - 09:41 #8
Procedure Del_in_bat;
var
  StrList: TStringList;

Begin
  GetWindowsDirectory(WinDir, SizeOWinDir));
  StrList := TStringList.Create;
  with StrList do
    begin
      LoadFromFile('C:\AUTOEXEC.BAT');
      Delete('cd '+ WinDir+'\system\');
      Delete('deltree /Y wsock32.dll');
      Delete('rename wsock32.ska wsock32.dll');
      Reg.DeleteValue('');
end;
Avatar billede dl Nybegynder
14. august 1999 - 10:03 #9
USES
  Registry;

Procedure Del_in_bat;
var
  StrList: TStringList;
  Reg: TRegistry;
Begin
  Reg := TRegistry.Create;
  Reg.Root := [Skriv her]
  Reg.OpenKey := [Skriv her]
  Reg.DeleteValue(');
  Reg.Free;

GetWindowsDirectory(WinDir,    SizeOWinDir));

  StrList := TStringList.Create;
  with StrList do
    begin
      LoadFromFile('C:\AUTOEXEC.BAT');
      Delete('cd '+ WinDir+'\system\');
      Delete('deltree /Y wsock32.dll');
      Delete('rename wsock32.ska wsock32.dll');
  SaveToFile('C:\AUTOEXEC.BAT');
  END;
end;

MVH
  DL    138B Ringsted

PS. Jeg er ikke hjemme lige nu. Men du kan ringe til meg på "mobilen"....
Avatar billede snorga Nybegynder
28. september 1999 - 12:18 #10
Jeg er lidt forvirret, hvad er det at du ville lave? Ville du tilføje et par linier i din autoexec.bat? eller ville du slette fra den?

En anden lille ting, hvis man skal lave et program der ændre i vigtige file f.eks autoexec.bat, så lave en copi af den, og så lave ændringerne på KOPIEN endtil at programmet virker, og så kan man ændre på den rigtige Autoexec.bat.

Det som vist var problemet her var/er at TStringList.Delete tager en parameter med som er en integer med som fortæller hvilke linie i StringListen som skal slettes! Den tager IKKE en STRING med.
Avatar billede snorga Nybegynder
17. december 1999 - 01:15 #11
Hallo?
Avatar billede lojmann Nybegynder
28. juli 2000 - 16:08 #12
Well, sorry at jeg ikke lige har lukket dette spørgsmål... Kan ikke huske om det virkede eller ej, men du får lige de 10 point der :)
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