Witam
To znowu ja :lol:
obecnie mój problem polega na tym iż zrobiłem program i wchodząc w niego daje opcje żeby wczytał mi plik TXT (tekst z niego) ale nie mogę wczytać np poszczególnej linijki tylko cały tekst…
proszę o pomoc
Witam
To znowu ja :lol:
obecnie mój problem polega na tym iż zrobiłem program i wchodząc w niego daje opcje żeby wczytał mi plik TXT (tekst z niego) ale nie mogę wczytać np poszczególnej linijki tylko cały tekst…
proszę o pomoc
Ale podaj razem z kodem co zrobiłeś w związku z czym…
Właściwie to co chcesz zrobić to niezbyt eleganckie podejście, może lepiej wczytać cały plik do bufora a potem analizować?
Co najmniej wczytaj kawałek tekstu do bufora, przeanalizuj, wczytaj następny itd. Albo stwórz TStringList i użyj ReadFromFile();
Tak jak ty chcesz zrobić, to ja bym zrobił tak… Najpierw cały tekst bym wczytał do jednego, niewidocznego (VISIBLE = FALSE) np Memo. A potem do tego, gdzie już chcesz wczytać pojedynczą linijkę, to po prostu odpowiedni index linijki podajesz. Np Memo1.Text:=Memo2.Lines.Strings[3]; - taki przykład. Mam nadzieję, ze dobrze zrozumiałem,o co chodzi xD
Po cholerę tworzyć memo jeżeli całą funkcjonałność którą potrzebujesz zawiera TStringsList a właściwość Lines z TMemo to właśnie TStringsList.
o jejku, ja mu tylko doradziłem, tak jak mi przyszło do głowy… Ty możesz doradzać inaczej, i ja się do tego nie wtrącam…
To jest rada w stylu: Potrzebujesz zapalniczki? to tu za rogiem salon BMW, kup samochód a w nim zapalniczka, a samochód ukryjesz w garażu :lol:
Zaczynam się zastanawiać czy przypadkiem “adorator Symfonii” nie jest diagnozą. #-o
Proszę cię, daruj sobie swoje komentarze, bo nie jesteś, jak to się mówi “ALFA I OMEGA”. Więc nie komentuj moich wypowiedzi, tak jak ja nie komentuję twoich…
Po to istnieje forum aby miedzy innymi komentować. Na forum prowadzi się dyskusja, jedynie ci którzy uważają siebie za “ALFA I OMEGA” nie znoszą komentarzy.
To przynajmniej skończ komentować to, w jaki sposób pomagam… Pomagam jak umiem, i ode mnie EOT…
Właśnie na tym polega problem z tobą, próbujesz pomagać ledwo znając temat. Aby zacząć pomagać trza znać się na temacie w miarę dobrze. A jak temat zna się powierzchownie to wychodzą rady tak jak ta powyżej lub ta z przysłowiową już Symfonią.
iRUKA , zobacz co znalazłem u siebie w archiwum :lol:
function ReadLine(Fs:TFileStream;var Line:String):Boolean;
var N,P:Integer;
var Buff:String;
const BuffSize=128;
begin
SetLength(Line,0);
SetLength(Buff,BuffSize);
while true do
begin
N:=Fs.Read(Buff[1],BuffSize);
if N<=0 then
begin
Result:=false;
Exit;
end;
P:=Pos(#13#10,Buff);
if (N
if P>0 then
begin
Line:=Line+Copy(Buff,1,P-1);
Fs.Seek(P+1-BuffSize,soFromCurrent);
Break;
end
else Line:=Line+Buff;
end;
Result:=true;
end;
procedure ReadFileLineByLine(const FileName:String);
var Fs:TFileStream;
var Line:String;
begin
Fs:=TFileStream.Create(FileName,fmOpenRead);
try
while ReadLine(Fs,Line) do
begin
ShowMessage(Line);
end;
finally
Fs.Free;
end;
end;
Tylko że to nie jest najlepsza metoda odczytu, program odczytuje nadmiar a potem się cofa. Najlepiej przerobić go conieco, stworzyć klasę dziedziczącą po TFileStream do której dodać bufor oraz jego bieżące wypełnienie. W metodzie, zostawiać resztę w buforze kasując to co dodało się do wiersza i na początku następnego odczytu dodać resztę z bufora do wiersza. Oczywiście należy też najpierw sprawdzić czy Line zawiera znak końca wiersza a jeżeli nie to doczytać kolejną porcje bajtów.
przepraszam ze tak późno opisuje mój problem bardziej szczegółowo
Zależy mi na tym aby plik który został załadowany i zainicjowany przy starcie programu nie wyświetlał teksu w Memo. Chodzi mi o to, żebym mógł go ręcznie modyfikować a następnie pobierać dane ale tylko wybrane i to nie do TMemo tylko do TEdita. Np. W pliku tekstowym wpisuje : - pierwsza linijka - druga - trzecia - czwarta itp. Potem Wciskam buttona i pobiera mi tylko napis “trzecia” i wyświetla w Tedit. A to kod ktorego użyłem do otwarcia:
var
Text: TextFile;
begin
AssignFile(Text, ' //tu ścieżka pliku');
try
if FileExist('//Scieżka pliku')
Reset(Text)
else Rewrite(Text);
finally
CloseFile(Text);
end;
end;
To może zainteresuj się klasą TIniFile
Odczyt:
var WinIni:TIniFile;
begin
WinIni:=TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini'));
with WinIni do
begin
try
Edit1.Text:=ReadString('TForm1','Edit1',Edit1.Text);
BoundsRect:=Bounds
(
ReadInteger('TForm1','FormLeft',Left),
ReadInteger('TForm1','FormTop',Top),
ReadInteger('TForm1','FormWidth',Width),
ReadInteger('TForm1','FormHeight',Height)
);
finally
Free;
end;
end;
end;
Zapis:
var WinIni:TIniFile;
begin
WinIni:=TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini'));
with WinIni do
begin
try
WriteString('TForm1','Edit1',Edit1.Text);
WriteInteger('TForm1','FormLeft',Left);
WriteInteger('TForm1','FormTop',Top);
WriteInteger('TForm1','FormWidth',Width);
WriteInteger('TForm1','FormHeight',Height);
finally
Free;
end;
end;
end;
Plik będzie wyglądał:
[TForm1]
Edit1=Zapisany Tekst
FormLeft=100
FormTop=150
FormWidth=300
FormHeight=200
Dla drugiej formy tez możesz pisać w tym samym pliku.
dziękuje za pomoc
wszystkie komendy podane przez was przydają mi się wiec niema co sie kłócić
zrobię z tego tematu główny watek w którym będę zadawał swoje pytania wiec jeśli można to w razie czego zajrzyjcie tu
Witam.
Mam pewien problem.
Po skompilowaniu i zbudowaniu programu podczas uruchomienia wyskakuje mi błąd.
Błąd ten dotyczy braku plików tła i ikon.
Jak mogę dołączyć pliki obrazów na stałe do programu, aby cała aplikacja zawierała się
wyłącznie w jednym pliku wykonywalnym?
Program działa u mnie bez problemów ale u innych osób szuka pliku z mojego dysku.
Zależy mi na tym aby w ogóle nie wyszukiwał potrzebnych plików tła i ikony tylko przy odpaleniu
aplikacji (składającej się z jednego pliku) automatycznie się wszystko wyświetliło.
Z góry dziękuję i pozdrawiam.