PDA

View Full Version : Mình đang gặp khó khăn về việc đọc file trong C#...



duonglongvinh
16-06-2009, 16:56
Mình đọc dữ liệu từ một file và minh muốn lưu nó vào một struct, trong file đó có nhiều trường, vậy phải làm thế nào mong các pác giúp cho.

trinm1987
16-06-2009, 19:34
Bạn phải nói rõ là bạn muốn lưu file gì? bạn nói muốn lưu nó vào một cấu trúc, file của bạn muốn lưu có phải xml
Bạn phải nói rõ mình mới giúp bạn được!
Thân chào!

duonglongvinh
16-06-2009, 22:42
Hiện mình đang có một file tên toado.DAT lưu bằng mã nhị phân theo một struct:
1. public struct todo
2. {
3. float x,y; //thuoc tinh
}
bây giờ mình muốn lấy tất cả dữ liệu từ file trên rồi lần lượt so sánh với một mẫu tin của struct khác có cấu trúc giống như struct toado trên. Mong bác giúp đỡ mình đang cần gấp.

nvson_ptit
17-06-2009, 13:47
Mình không làm nhiều về File, Nên chỉ biết cách này thôi. bạn thử xem nha.
Mỗi dòng bạn ghi 1 cặp 2 số x,y có phân cách nhau bởi dấu ","
khi nào bạn đọc lên thì chỉ cần cắt bỏ dấu "," là được 2 số float.

samulong
17-06-2009, 14:33
Bạn có thể sử dụng file dạng XML để lưu nội dung mẫu tin với node cha là ToaDo, node cha có 2 node con là ToaDoX và ToaDoY.
Khi đọc file XML lên bạn sẽ có tập hợp các node ToaDo từ đó có thể so sánh theo node con.
Thân

trinhdiep
17-06-2009, 17:41
cách đơn giản nhất là bạn chuyển toàn bộ file đó sang danh sách các toado của bạn rồi so sánh trong list đó. (dọc nhị phân và convert sang)
cách nhanh hơn là file của bạn phải được lưu theo thứ tự nào đó để bạn cắt ra và so sánh.

duonglongvinh
17-06-2009, 17:57
Vẫn chưa làm được, các pác có thể chỉ cụ thể một chúc không. huhu

nvson_ptit
17-06-2009, 21:43
Khi bạn ghi thì ghi như file nhị bình thường, giá trị X ghi trước, y ghi sau.
Khi đọc thì bạn cho nó vào 1 mảng float hoặc double

BinaryReader br = new BinaryReader(file);
Double[] db = new double[file.Length/8];
for (int i = 0; i < file.Length / 8; i++)
{
db[i] = br.ReadDouble();
}

trong mảng db thì chỉ số chẵn là x, chỉ số lẻ lày. như vậy là bạn có thể so sánh với 1 tọa độ.

duonglongvinh
17-06-2009, 22:56
Cảm ơn các pác nha mình đã lấy được rồi, nhưng cho minh hỏi thêm tí nửa nha, có cách nào để mình biết được chiều dài của file hoặc cách đễ xác định vị trí kết thúc của file không mấy pác.

hihi!!!! cảm ơn mấy pác nhiều nha.

nvson_ptit
17-06-2009, 23:22
chiều dài của file: file.Length

duonglongvinh
19-06-2009, 10:09
Máy bác cho mình hỏi tí nửa nha, lam phiền máy bác wa hihi
Mình muốn kiểm tra form trước khi mở. code như sau:

Fom2:

public partial class Form2 : Form
{
private static Form2 f2 = null;
public Form2()
{
InitializeComponent();
}
public static Form2 Get()
{
if (f2 == null)
{
f2 = new Form2();
}
else
{
f2.Focus();
}
return f2;
}
}

////////////////////////////
Form1: trong button mình gọi ra nhw sau:

private void button1_Click(object sender, EventArgs e)
{
Form2 form = Form2.Get();
form.Show();
}

Vậy thì nó không mở thêm form2 mới nửa nhưng khi mình close form2 lại mình gọi button lại thi lỗi mấy bác có cách nào khi gọi button lại thì form2 mở lên bình thường không.

hihi!

duonglongvinh
14-08-2009, 18:02
Không bác nào trả lời hết buồn quá!!

[=========> Bổ sung bài viết <=========]

Mấy pác ơi có ai rảnh không cho mình hổi thêm:

Mình cần xử lý khi nhấn vào một button thì có danh sách sổ xuống giống như menu vậy đó, nhưng không phải dùng mennuStrip. Tại vì e muốn đặt nút đó tùy ý. Có pác nào biết xin chỉ cho.